如何在单个Visual Studio项目中构建多个.dll文件(.mexw32文件)?

3
我维护一个由大量MEX文件组成的Matlab库。迄今为止,我已经使用Matlab脚本构建了该库,但现在我想开始使用Microsoft Visual Studio IDE进行整个构建过程。我已经按照以下说明取得了相当大的进展: 然而,这些说明似乎只适用于单个MEX文件。我遇到的问题是如何在单个Visual Studio项目中构建多个.mexw32目标(或等效的.dll目标)?为MEX文件创建单独的项目(在同一解决方案中)不是我想要考虑的选项。这些文件数量达到了数百个。
对于那些不熟悉Matlab的人来说,MEX文件是用C++编写的扩展文件,基本上编译成具有特殊扩展名.mexw32的.dll文件。每个文件都导出一个单个入口点void mexFunction(...)。据我所知,您不能将这些链接到单个.dll中,这是我想要做的事情。

成百上千的mex文件?为什么不直接用C++写整个程序呢? - Rich C
2个回答

1

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

mex -f msvc90opts.bat MyMexFile.c

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

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

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

0

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

也许您需要考虑使用一些脚本自动化整个过程,以创建如此多的项目并将它们添加到单个解决方案中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接