使用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文件拷贝到发布库,程序运行正常,原因暂时无法排查。

浙公网安备 33010602011771号