MX在将matlab与VC ++集成时创建双矩阵错误

时间:2011-06-27 22:43:03

标签: c++ matlab matlab-engine

当我创建一个项目以将图像的路径传递给我的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:函数_main中引用了未解析的外部符号_mxCreateDoubleMatrix_730_proxy

错误3

  

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

那么如何解决这些错误?

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

1 个答案:

答案 0 :(得分:0)

您需要为链接器包含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,表示所有内容都已初始化,您应该检查它。