过去几个月,我在Matlab的2010b 64bit版本中一直使用matlab中的deploytool。我刚刚发现我需要创建一个32位版本的c共享库。
要做到这一点,我在我的2009b 32版本的Matlab中遵循我以前使用的相同方法(几乎调用命令mcc -W lib:MYLIB -T link:lib -d 'MYOUTPUTFOLDER' -v 'MFILE1' 'MFILE2'
)。我一直收到错误LNK1811:无法打开输入文件LIBRARY.obj。我试图找到这个LIBRARY目标文件,但我似乎无法在任何地方找到它。
到目前为止,我已经检查过以确保所有正确的库都可用(在$ MATLABROOT $ \ extern \ include \ win32中找到),我确保我的所有路径在compopts.bat文件中都是正确的,而且我使用选项-T compile:lib工作正常并创建一个DLL。这将是伟大的,但我需要一个lib文件稍后在mbuild中使用。
我目前的前进方向是从我的64位版本的Matlab(在不同的机器上)中获取compopts,并将其与32位的compopts进行比较。如果它有所作为,我会发布。
答案 0 :(得分:1)
总结我们在问题中的评论并作出答案。以下是我如何使用mcc创建x32和x64库/标准库。
注意:也许还有更优雅的解决方案来配置deploytool,无论如何都是蛮力我确信它可行,我可以自动化我的应用程序的全局部署过程...
机器设置
运行Matlab x32并设置编译器选项,输入msbuild -setup
compopts.bat
中生成~user\AppData\Roaming\MathWorks\MATLAB\R2013b
文件(路径可能因您的版本而异) compopts.x32.bat
(请参阅后面的内容) 运行Matlab x64并设置编译器选项,键入msbuild -setup
compopts.bat
中的~user\AppData\Roaming\MathWorks\MATLAB\R2013b
文件(!!覆盖x32 !!) compopts.x64.bat
(要解决文件覆盖问题) 编辑 刚刚测试过...在R2014b中,Matlab不再覆盖相同的compots.bat
文件...它现在生成两个单独的MBUILD_C++_win64.xml
和{{ 1}}文件(这是一件好事!)。
在x32中编译
强制您的编译脚本指向MBUILD_C++_win32.xml
并强制~matlabx32\bin\win32\mcc.exe
使用mcc.exe
选项使用以前保存的compopts.x32.bat
文件。您的命令行应该是这样的:
-f
在x64中编译
强制您的编译脚本指向~matlabx32\bin\win32\mcc.exe -f "compopts.x32.bat" ... other mcc options ...
并强制~matlabx64\bin\win64\mcc.exe
使用mcc.exe
选项使用以前保存的compopts.x64.bat
文件。您的命令行应该是这样的:
-f