MX在将matlab与VC++集成时产生双矩阵错误

MX Create double matrix error when integrating matlab with VC++

本文关键字:错误 matlab 在将 VC++ 集成 MX      更新时间:2023-10-16

当我创建一个项目将图像的路径传递到我的matlab项目时,我创建了初始化:

#include "feautresPoints.h"

int main(int argc, char* argv[])
{
    mxArray* result;
    mxArray* x;
    double myArray[5]={10.2, 3, 6.3, 5.4, 5.9};
    x=mxCreateDoubleMatrix(1, 5, mxREAL);
    memcpy(mxGetPr(x), myArray, 5 * sizeof(double));
    feautresPointsInitialize();
    feautresPointsTerminate();

    return 0;
}

它给了我3个错误

错误1

错误LNK2019:函数_main 中引用的未解析外部符号_mxGetPr_proxy

错误2

错误LNK2019:未解析的外部符号_mxCreateDoubleMatrix_730_proxy在函数_main 中引用

错误3

错误LNK1120:2个未解析的外部

那么我该如何解决这些错误呢??

我在C++项目和libmx.lib中包含编译期间生成的matlab项目库,还添加了用于matlab的包含文件,还为其他库目录添加了matlab库

您需要为链接器包含MATLAB库。在我的例子中:"C:\Program Files\MATLAB\MATLAB Compiler Runtime\v714\extern\lib\win32\microsoft*"

此外,您没有正确初始化MATLAB环境,请参阅MATLAB帮助中的"使用mclInitializeApplication和mclTerminateApplication初始化和终止应用程序"。

mxArray* result;
mxArray* x;
mclInitializeApplication(NULL,0);
feautresPointsInitialize();
/* Your c++ code here */
feautresPointsTerminate();
mclTerminateApplication();
return 0;

注意,feautresPointsInitialize()将返回一个bool,指示所有内容都已初始化,您应该检查它。