我想将我在 Matlab 中的仿真代码转换为 C++,并使用 Visual Studio 或 g++ 等 C++ 编译器运行它。我修改了我的代码以使用 Matlab Coder 成功构建一个 C++ 项目。编码器在顶层项目目录中返回一个 .prj 文件,在 dll 目录中返回数十或数百个 c++ source/header/object 文件。我尝试使用 Visual Studio 2012 或 2013(我尝试使用这两个版本)打开 .prj 文件,但均未成功,他们甚至无法打开 .prj 文件。我已确保使用 mex -setup 在 Matlab 中将 Visual Studio 配置为 C++ 语言编译器。有谁知道如何使用 Visual Studio 或 g++ 处理 .prj 和后续文件?我现在不想让它可执行;我只想使用任一编译器运行它并确保它正常工作。谢谢
2 回答
生成的prj
文件用于 MATLAB Coder GUI,而不是 Visual Studio。如果您在 MATLAB 中双击该文件,将打开 Coder GUI,您可以使用它生成代码。
有关在 Visual Studio 中使用生成代码的简单示例,您可以参考文档。
如果您要在运行 MATLAB 的同一平台上使用生成的代码,我建议将输出类型更改为静态库 ( LIB
) 或共享库 ( DLL
)。这样做会导致生成 C 或 C++ 代码,然后使用您指定的编译器将其编译到库中。然后,您可以编写代码来调用生成的头文件中声明的函数,并在编译您的手写代码时链接到生成的库中。
对于 Visual Studio,您需要将 codegen 目录添加codegen/lib/<proj_name>
到包含路径,并将生成的 LIB/DLL 文件添加为依赖项。使用 GCC,在编译库中的代码和链接时,您需要将相同的目录添加到包含路径。
我的另一个答案的后半部分包含更多信息。
或者,如果您main
编写了 C 函数,您可以将输出类型设置为EXE
并指定主函数以让 MATLAB Coder 生成代码,使用您提供的代码进行编译main
并编译一个独立的可执行文件。
有谁知道如何处理 .prj
我相信你应该在 .prj 文件上运行“mcc”
引用
"指定 mcc 使用指定项目文件中包含的设置。使用
-F project_name.prj 调用mcc时指定project_name为工程文件名。此选项允许将 .prj 文件及其所有相关设置反馈给 mcc。使用 mcc 或 deploytool 创建的项目文件可以使用此选项。使用 -F 时,不得针对 mcc 调用其他参数。”