Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 帮助:VS2005编译*.m文件_C++_Visual C++_Matlab_Matlab Compiler - Fatal编程技术网

C++ 帮助:VS2005编译*.m文件

C++ 帮助:VS2005编译*.m文件,c++,visual-c++,matlab,matlab-compiler,C++,Visual C++,Matlab,Matlab Compiler,全部 我有test.m(matlab源代码)文件,它实现了一个()函数;和main.cpp文件(将调用() 如您所知,我们可能会执行以下步骤: 使用matlab编译test.m(mcc-),将生成:test.dll、test.ctf、test.h 将test.dll和test.ctf、test.h文件复制到VS2005项目中。在main.cpp中,调用test.dll中的() 但是,当我发布程序时,我还将把test.dll打包在一起 另外,我可以使用VS2005编译test.m和main.cpp

全部

我有test.m(matlab源代码)文件,它实现了一个()函数;和main.cpp文件(将调用()

如您所知,我们可能会执行以下步骤:

  • 使用matlab编译test.m(mcc-),将生成:test.dll、test.ctf、test.h

  • 将test.dll和test.ctf、test.h文件复制到VS2005项目中。在main.cpp中,调用test.dll中的()

  • 但是,当我发布程序时,我还将把test.dll打包在一起

    另外,我可以使用VS2005编译test.m和main.cpp,它们只生成main.dll、main.ctf、main.h…(我只发布main.dll、main.ctf、main.h…)

    这意味着,我将test.m编译成main.cpp

    我已经尝试过这种方法,在VS2005中-->构建事件-->预构建事件-->命令行:mcc C-w lib:test test.m

    它将生成中间文件test.ctf(只有test.ctf,没有test.dll),但我不知道如何将test.ctf编译成main.cpp

    有人能帮我吗


    谢谢。

    您可以用另一种方法将main.cpp添加到matlab构建过程中:我不知道确切的语法,但您可以将main.cpp添加到mcc/mbuild,它会为您添加到dll中。在gui模式下使用deploytool时,只需将c/c++文件拖到资源区域,它们就会被编译到dll中。所以你只会有一个DL,其中既包含M代码又包含自己的C++代码。 使用上述策略的另一个选项是:首先尝试上述方法,并查看deploytool的输出:它将向您显示所使用的命令。首先它调用mcc,然后是mbuild,后者依次调用cl(MS编译器)。使用用于调用mcc的确切命令作为预构建事件,然后将该输出文件添加到cl中,方法与mbuild相同(您还可以在输出中看到它是如何做到这一点的)。通过这种方式,您可以使用VS构建单个dll,只需模仿matlab构建过程即可


    但我不确定这对分开分配两者有何好处。另外,不要忘记您必须分发整个MCR,否则您的客户端将无法使用dll运行任何代码。

    首先,感谢您的大力帮助。但我想要的是,使用VS2005来构建*.m文件,而不是使用Matlab工具。@nitty1983你到底是什么意思?使用c/c++编译器构建m文件?这是不可能的。