matlab 2012a mex设置,Mex使用哪个配置选项使用matlab进行编译?

例如,如果选择mexopts.sh作为mex的配置文件,

那么mex如何确定mexopts.sh中列出的哪个选项用于编译?

例如,在64位Mac OS X上使用32位Matlab:

mexopts.sh看起来像:

,,maci

........

,,maci64

......

那么,在编译时使用maci或maci64?

为了编译32位库而不是64位库,我可以做什么命令或方式?

我的过程和收到的错误消息的进一步说明:

我将Mac OS X 10.8(64位)与Matlab R2010a(32位)结合使用来生成二进制mex文件。

Xcode是4.6版本,我在计算机上安装了命令行工具。然后我还是从matlab下载了2011和2012版本的补丁。 (如果我不安装补丁,则会收到很多链接错误,提示缺少一些头文件)。

安装补丁程序后(我相信它会更改我的mexopts.sh文件),当我运行mex a.cpp时,出现错误消息,提示找不到/Applications/MATLAB_R2010a.app/bin/maci64。当然,它找不到maci64文件夹,它是32bit,只有maci文件夹。

所以有人知道我应该怎么做才能使matlab查找maci文件夹而不是maci64文件夹吗?非常感谢!

MATLAB不支持MEX文件的交叉编译。因此,即使操作系统为64位,您的32位MATLAB安装也应生成32位MEX文件。

另外,从我链接的文章中

Further, beginning with R2010b, a 32-bit version of MATLAB is no longer produced for the Mac.

如果您运行的是R2010b或更高版本,则MATLAB并非32位。

要查看MEX脚本调用编译器的方式,请使用-v选项。

您还可以使用file工具检查生成的二进制文件是32位还是64位。

MATLAB不支持MEX文件的交叉编译。 因此,即使操作系统为64位,您的32位MATLAB安装也应生成32位MEX文件。 ----因此,如果我给mex a.cpp,它将生成32位版本? 但是,当我给类似mex a.cpp的东西时,我收到一条错误消息,说找不到/Applications/MATLAB_R2012a.app/bin/maci64。 显然,对于32位Matlab(R2010a),没有maci64文件夹,只有maci文件夹。 为什么会收到此错误消息? 我应该做这样的事情:mex -arch maci a.cpp吗? 我做错了什么? 谢谢。

@ user1558064不幸的是,我从未在Mac上使用过MATLAB,因此对于诸如该错误之类的特定问题,Im不会有太大帮助。 您可以尝试-arch选项。 还添加-v开关,并查看传递给编译器的标志。 这应该有助于您确定输出二进制文件是32位还是64位。

如前所述,MATLAB产生的MEX文件的位数与它本身的位数相同,而不是与OS相同。至少在具有最新MATLAB版本的Windows上是如此,您可以在64位Windows上运行32位或64位MATLAB。其他平台仅朝着64位版本发展。

这是获取已配置的mex开关的另一种方法:

>> cc = mex.getCompilerConfigurations

>> cc.Details

就我而言:

>> cc = mex.getCompilerConfigurations

cc =

CompilerConfiguration with properties:

Name: 'Microsoft Visual C++ 2010'

Manufacturer: 'Microsoft'

Language: 'C++'

Version: '10.0'

Location: 'C:\Program Files\Microsoft Visual Studio 10.0'

Details: [1x1 mex.CompilerConfigurationDetails]

LinkerName: 'Microsoft Visual C++ 2010'

LinkerVersion: '10.0'

>> cc.Details

ans =

CompilerConfigurationDetails with properties:

CompilerExecutable: 'cl'

CompilerFlags: [1x115 char]

OptimizationFlags: '/O2 /Oy- /DNDEBUG'

DebugFlags: '/Z7'

LinkerExecutable: 'link'

LinkerFlags: [1x327 char]

LinkerOptimizationFlags: ''

LinkerDebugFlags: '/debug /PDB:"%OUTDIR%%MEX_NAME%%MEX_EXT%.pdb"'

要回答我自己的问题,仅针对可能对此感兴趣的人,

我检查了mexopts.sh的内容,并修改了maci的部分(具体设置为ARCH = i386),然后进行编译。错误消息不见了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值