在 Visual Studio 或 g++ 上运行 Matlab Coder 输出项目

Posted

技术标签:

【中文标题】在 Visual Studio 或 g++ 上运行 Matlab Coder 输出项目【英文标题】:Run Matlab Coder Output Project on Visual Studio or g++ 【发布时间】:2014-11-29 23:32:58 【问题描述】:

我想将我在 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 和后续文件?我现在不想让它可执行;我只想使用任一编译器运行它并确保它正常工作。 谢谢

【问题讨论】:

【参考方案1】:

生成的prj 文件用于 MATLAB Coder GUI,而不是 Visual Studio。如果您在 MATLAB 中双击该文件,将打开 Coder GUI,您可以使用它生成代码。

有关在 Visual Studio 中使用生成代码的简单示例,您可以参考the documentation。

如果您要在运行 MATLAB 的同一平台上使用生成的代码,我建议将输出类型更改为静态库 (LIB) 或共享库 (DLL)。这样做会导致生成 C 或 C++ 代码,然后使用您指定的编译器将其编译到库中。然后,您可以编写代码调用生成的头文件中声明的函数,并在编译您的手写代码时链接到生成的库中。

对于 Visual Studio,您需要将 codegen 目录 codegen/lib/<proj_name> 添加到包含路径,并将生成的 LIB/DLL 文件添加为依赖项。使用 GCC,您需要在编译库中的代码和链接时将相同的目录添加到包含路径。

我other answer的后半部分有更多信息。

或者,如果您编写了 C main 函数,您可以将输出类型设置为 EXE 和 specify the main function 以让 MATLAB Coder 生成代码,使用您提供的 main 编译它并编译一个独立的可执行文件.

【讨论】:

【参考方案2】:

有谁知道如何处理 .prj

我相信你应该在 .prj 文件上运行“mcc”

引用

"指定mcc使用指定项目文件中包含的设置。使用

-F 项目名称.prj 调用 mcc 时将 project_name 指定为项目文件名。此选项允许将 .prj 文件及其所有相关设置反馈给 mcc。使用 mcc 或 deploytool 创建的项目文件可以使用此选项。使用 -F 时,不能针对 mcc 调用其他参数。”

【讨论】:

命令 mcc 是 MATLAB Compiler 的一部分,而不是 MATLAB Coder。 ***.com/a/18128820/3297440 描述了差异。 谢谢。 mcc 在 Matlab 中运行代码。我想知道如何在 Visual Studio 2013 或 g++ 等 C 编译器上运行它。

以上是关于在 Visual Studio 或 g++ 上运行 Matlab Coder 输出项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Linux 上高效编译 Visual Studio C++ 项目

如何查看我的 Xamarin.Forms 应用程序是不是在 Visual Studio 中的 Android 6(或更高版本)上运行或/和可运行?

如何使 Visual Studio C++ 2010 编译行为像 gcc/g++? (或相反亦然)

无法在 Windows 7 上运行 Visual Studio 2003 IDE

如何在 GUI 中实现我的 while 循环以使用 Visual Studio 在 C/C++ 中保持按键

在 ubuntu 中运行 Visual Studio .exe