帮助:VS2005编译* .m文件

时间:2011-09-01 04:58:25

标签: c++ visual-c++ matlab 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()。

  3. 但是,当我发布程序时,我也会将test.dll打包在一起。

    另一方面,我可以使用VS2005编译test.m和main.cpp,它们只会生成main.dll,main.ctf,main.h ..(我只会释放main.dll,main。 CTF,main.h)。

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

    我试过这种方式,在VS2005 --->构建事件 - > pre-Build Event - >命令行:mcc C -w lib:test test.m

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

    任何人都可以帮助我吗?

    感谢。

1 个答案:

答案 0 :(得分:1)

你可以反过来把你的main.cpp添加到matlab构建过程中:我不知道确切的语法,但你可以将你的main.cpp添加到mcc / mbuild,它会添加它给你的dll。在gui模式下使用deploytool时,只需将c / c ++文件拖到资源区域,然后将它们编译到dll中。所以你将只有一个dll包含m代码和你自己的c ++代码。

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

我仍然不确定这对分配这两个人有什么好处。另外不要忘记你必须用它分发整个MCR,否则你的客户将无法使用dll运行任何代码。