【问题标题】:How to build multiple .dll files (.mexw32 files) in single Visual Studio project?如何在单个 Visual Studio 项目中构建多个 .dll 文件(.mexw32 文件)?
【发布时间】:2011-06-13 06:03:43
【问题描述】:

我维护了一个包含大量 MEX 文件的 Matlab 库。到目前为止,我已经使用 Matlab 脚本构建了该库,但现在我想开始在整个构建过程中使用 Microsoft Visual Studio IDE。我已经按照以下说明走得很远了:

但是,这些说明似乎仅适用于单个 MEX 文件。我遇到的问题是如何在单个 Visual Studio 项目中构建多个 .mexw32 目标(或等效的 .dll 目标)?为 MEX 文件创建单独的项目(在同一解决方案中)不是我急于考虑的选项。这些文件数以百计。

对于那些不熟悉 Matlab 的人来说,MEX 文件是用 C++ 编写的扩展文件,基本上编译成带有特殊扩展名 .mexw32 的 .dll 文件。其中每一个都导出一个入口点void mexFunction(...)。 AFAIK 你不能将这些链接到一个单独的 .dll 中,这是我更愿意做的。

【问题讨论】:

  • 数百个 mex 文件?为什么不直接用 C++ 编写整个程序?

标签: c++ visual-studio matlab mex


【解决方案1】:

在 MATLAB 脚本中构建它可能更容易。例如这样的 MATLAB 命令:

mex -f msvc90opts.bat MyMexFile.c

将完成这项工作。显然,每个 MEX 文件只有一行。 msvc90opts.bat 文件基于bin\win32\mexopts 下的 MATLAB 安装文件夹中提供的模板。

在我的构建过程中,我将这些对mex 的调用包装到一个函数中,然后使用以下命令从命令行调用它:

matlab.exe -wait -sd . -nosplash -nojvm -r "BuildMex, exit"

【讨论】:

    【解决方案2】:

    我认为为每个 MEX 文件创建一个项目并将它们放入一个解决方案中是唯一的选择。项目文件旨在表示一个目标,即静态库、动态库或可执行文件。解决方案旨在代表一组项目以及它们如何相互依赖。这正是您所需要的。

    也许您必须考虑使用一些脚本自动化整个事情以创建如此大量的项目并将它们添加到单个解决方案中的可能性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多