在Visual Studio C ++中使用matlab dll文件

时间:2016-03-06 10:18:53

标签: c++ matlab visual-studio-2012 dll

我在matlab中使用“mcc”命令从一个简单的添加函数创建了一个dll文件,如下所示:

function c = MyAdd(a,b)
    c = a + b;

我输入了这个命令:

mcc -t -L C -W lib:libMyAdd -T link:lib MyAdd.m libmmfile.mlib

它生成这些文件:

libMyAdd.lib
libMyAdd.c
libMyAdd.h
libMyAdd.dll

然后我在VS中创建了一个空的C ++项目并编写了这个源代码:

#include <iostream>
#include <conio.h>
#include "libMyAdd.h"

int main()
{
    double k[4];
    mwArray out;
    out.GetData(k, 4);
    // initialize MCR and lib
    if (!mclInitializeApplication(NULL,0))  {
        std::cerr << "could not initialize the application" << std::endl;
        return -1;
    }
    if(!libMyAddInitialize()) {
        std::cerr << "Could not initialize the library" << std::endl;
        _getch();
        return -1;
    }

    try {
        // create input
        double g[] = {1.0, 2.0, 3.0, 4.0};
        double h[] = {5.0, 6.0, 7.0, 8.0};
        mwArray in1(2, 2, mxDOUBLE_CLASS, mxREAL);
        mwArray in2(2, 2, mxDOUBLE_CLASS, mxREAL);
        in1.SetData(g, 4);
        in2.SetData(h, 4);

        // call function
        mwArray out;
        MyAdd(1, out, in1, in2);

        // show result
        std::cout << "in1 + in2 = " << std::endl;
        std::cout << out << std::endl;

        double k[4];
        out.GetData(k, 4);
        for(int i=0; i<4; i++) {
            std::cout << k[i] << " " << std::endl;
        }

    } catch (const mwException& e) {
        std::cerr << e.what() << std::endl;
        return -2;
    } catch (...) {
        std::cerr << "Unexpected error thrown" << std::endl;
        return -3;
    } 

    // cleanup
    libMyAddTerminate();   
    mclTerminateApplication();

    return 0;
}

我还将这些路径添加到项目属性中的include和library目录 - > VC ++目录以及链接器中的其他库目录 - &gt; general

C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\include
C:\Program Files\MATLAB\MATLAB Production Server\R2015a\extern\lib\win64\microsoft

另外,我添加了以下链接 - >输入 - >附加依赖项:

mclmcrrt.lib
libeng.lib
libmx.lib
libmex.lib
libmat.lib
mclmcr.lib
libMyAdd.lib

由于我的matlab版本是R2015a(64位),我将活动解决方案平台更改为x64(它是Win32)。

编译器没有显示任何错误,但在编译时会得到第一次机会异常(上传的图片)。

我做错了什么? 有什么建议吗?[上传的图片]

the error image

0 个答案:

没有答案