墨西哥人chai3d

8视图(30天)
卡洛斯马丁内斯苏亚雷斯
这就跟你问声好!我试图创建一个. cpp使用chai3d库和编译通过墨西哥人在MATLAB引擎。但是看起来MATLAB就不能承认每个chai3d文件因为它返回导入错误。我很失落这个任务和任何帮助将非常感激。
1评论
1月
1月 2021年12月13日
你忘了提到任何细节。输入文件导致的错误呢?你使用哪个图书馆?

登录置评。

答案(1)

卡洛斯马丁内斯苏亚雷斯
你好,谢谢你的回答,很抱歉没有给足够的细节,我将试图解释它更好。
我从官方下载chai3d库页面: https://www.chai3d.org/download/releases
然后我已经从MATLAB编译一个例子和工作完全当使用墨西哥人与2017年微软Visual c++编译器(chai3d所需的编译器)。
然后我复制这个例子(称为“prueba.cpp”)在chai3d库下载的文件夹:
最后,我只是添加一行包括chai3d。h文件:# include“chai3d.h”。在这里,问题来了。当我试着编译添加这一行之后,MATLAB说chai3d返回一个错误。无法找到h。这是解决改变包括句子译成# include " src / chai3d。h”只要是正确的道路。我真的不理解为什么我必须指定完整路径,当我添加的每个文件夹MATLAB路径。
当与“src / chai3d编译。h”,它返回文件的另一个错误,说在图书馆不能发现一些文件和这一切发生的时候,当修复之前的错误。
谢谢你那么快回答,我希望你能帮助我。
例子:
#包括“mex.hpp”
#包括“mexAdapter.hpp”
使用名称空间matlab:数据;
使用matlab:墨西哥人::ArgumentList;
使用名称空间性病;
MexFunction:公共matlab::墨西哥人:函数{
公众:
无效操作符()(ArgumentList输出,ArgumentList输入){
checkArguments(输出,输入);
常量双抵消输入[0]= [0];
TypedArray <二> doubleArray = std::移动(输入[1]);
(汽车elem: doubleArray) {
初步的+ =抵消;
}
输出[0]= doubleArray;
}
无效checkArguments (ArgumentList输出,ArgumentList输入){
/ /获取指针引擎
std::要查看< matlab::引擎::MATLABEngine > matlabPtr = getEngine ();
/ /获取数组工厂
ArrayFactory工厂;
/ /检查第一输入参数
如果(输入[0]. gettype () ! = ArrayType::双| |
输入[0]. gettype () = = ArrayType:: COMPLEX_DOUBLE | |
输入[0].getNumberOfElements () ! = 1)
{
matlabPtr - >函数宏指令(u“错误”,
0,
std::向量数组< > ({factory.createScalar (“第一输入必须标量双”}));
}
/ /检查第二输入参数
如果(输入[1]. gettype () ! = ArrayType::双| |
输入[1]. gettype () = = ArrayType:: COMPLEX_DOUBLE)
{
matlabPtr - >函数宏指令(u“错误”,
0,
std::向量数组< > ({factory.createScalar (“输入必须双数组”}));
}
/ /检查数量的输出
如果(outputs.size () > 1) {
matlabPtr - >函数宏指令(u“错误”,
0,
std::向量数组< > ({factory.createScalar (“只有一个输出返回”}));
}
}
};

s manbetx 845


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!