使用matlab生成的DLL时调用异常

问题一、调用matlab生成的dll函数时,其中一个频率的参数,正常值是200,也是按200传参数进去的,但是出现调用这个方法计算时

inputFreq 作为参数传递进来时,值是200

windowSize = inputFreq * 10;
smoothed_data_len = floor(dims(longerDim) / windowSize);
计算结果smoothed_data_len = 91,异常;

对代码进行修改

inputFreq = 200;

windowSize = inputFreq * 10;

smoothed_data_len = floor(dims(longerDim) / windowSize);
计算结果smoothed_data_len = 90,正常;
查看此时inputFreq 的类型是int32,而修改后的inputFreq 的类型是double,于是在调用函数时,参数值改成200.0后正常计算出来时90;
 
总结,在调用matlab生成的dll函数时,需要注意参数类型可能引发的问题。
 
问题二、在qt creator上调试运行时调用dll正常,发布后调用是提示初始化库失败
刚刚开始时是直接将调试目录下的动态库拷贝到了发布目录,发布后运行功能时,提示“无法初始化 imuCalibrationFunction4INS370 ”,直接从matlab打包出来的目录下再次拷贝这个dll到发布目录也一样。
重新使用matlab对.m文件进行打包后,再将最近打包的dll文件拷贝到发布库,程序运行正常,原因暂时无法排查。
 
posted @ 2025-04-23 09:39  一夜求风  阅读(67)  评论(0)    收藏  举报