帮助:VS2005编译*.m文件

Pri*_*ice 5 c++ matlab visual-c++ matlab-compiler

所有

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

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

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

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

但是,当我发布程序时,我也会将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

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

谁能帮助我?

谢谢.

sti*_*ijn 1

您可以以相反的方式执行此操作,并将 main.cpp 添加到 matlab 构建过程中:我不知道确切的语法,但您可以将 main.cpp 添加到 mcc/mbuild,它会将其添加到 dll为你。在gui模式下使用deploytool时,只需将c/c++文件拖到资源区,它们就会被编译到dll中。因此,您将拥有一个仅包含 m 代码和您自己的 c++ 代码的 dll。

另一种选择,使用上述策略:首先尝试上述方法,然后查看deploytool的输出:它会向您显示所使用的命令。首先它调用 mcc,然后 mbuild 又调用 cl(MS 编译器)。使用用于调用 mcc 作为预构建事件的确切命令,然后以与 mbuild 相同的方式将该输出文件添加到 cl (您还可以在输出中看到它是如何做到这一点的)。这样你就可以使用 VS 构建单个 dll,只需模仿 matlab 构建过程的作用即可。

我仍然不确定这比单独分发两者有什么好处。另外,不要忘记您必须将整个 MCR 与它一起分发,否则您的客户端将无法使用该 dll 运行任何代码。