【问题标题】:Help: VS2005 Compile *.m file帮助:VS2005编译*.m文件
【发布时间】:2011-11-08 03:20:21
【问题描述】:

全部

我有实现 A() 函数的 test.m(matlab source code) 文件;和 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 ---> Build Events--> pre-Build Event-->命令行:mcc C -w lib:test test.m

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

谁能帮帮我?

谢谢。

【问题讨论】:

    标签: c++ visual-c++ matlab matlab-compiler


    【解决方案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 运行任何代码。

    【讨论】:

    • 首先,感谢您的大力帮助。但我想要的是使用 VS2005 构建 *.m 文件,而不是使用 Matlab 工具。
    • @nitty1983 你到底是什么意思?使用 c/C++ 编译器构建 m 文件?这是不可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多