64位win7下vc2010如何调用matlab2012a中生成的dll文件

时间:2021-08-03 20:02:30

本文说是原创,但核心部分是参考http://blog.sina.com.cn/s/blog_a5fdbf0101018n91.html(大家可以先看看这篇文章),在此再次感谢debug童鞋。debug童鞋的系统是 win7 32位 + vc2010 (32位编译器) + Matlab2012a  ,如果童鞋们win7是32位的话就不必看我的了,可以直接照debug童鞋的步骤做。我的系统是win7 64位,所以安装matlab 2012a的时候自动安装的64位,这里要注意vc2010和matlab的兼容性问题,现在大家都知道了我的配置:win7 64位 +vc2010 (32位编译器) + Matlab2012a 。好的,不多说废话了,童鞋们,下面我们就开始了啊!

win7 64位上安装 R2012a 是自动安装64位的matlab ,然后生成动态链接库,所以vc2012必须采用的是64位的编译器,否则后面在执行程序会出现 模块X86和目标机X64 不符合的问题,或者出现 模块X64和目标机X86不符合的问题,这也是花了我一天的时间在网上找资料,并且不停的重装vc2012,最后才成功的!

要保证vc2010编译器是64位的,在安装vs2010是要选择visual C++选项,注意安装X64 Compliers and Tools,即打上勾,(这里想截图,但是不知道怎么上传不了图片,新人大家多多包涵哈),但是要注意,要把上面的Itanium Compliers and Tools前面的勾去掉,我就是没有把Itanium Compliers and Tools,后面才出现模块X86和目标机X64 不符合的问题,或者出现 模块X64和目标机X86不符合的问题,而且怎么改都不成功。(有兴趣的同学可以看看x64和IA64的区别),后面的安装步骤也就按常规步骤安装,这样vc2010中就有64位的编译器了。下面基本就比较简单了。

        现在介绍matlabR2012a生成dll文件和配置vc2010的环境。debug童鞋已经讲的很清楚了,按照步骤可以一次成功,这里我就不啰嗦了。(其实我想把那儿的步骤全部粘贴过来,但是我是新手,不太会粘图片,所以还是麻烦大家翻到那个网址看原版啊,请包涵哈)。注意,对于64位系统的同学,你们的mclmcrrt.lib和mclmcr.lib是在(matlab安装路径)\extern\lib\win64\microsoft下,所以要将win32改成win64 。还有这里改正debug同学一个有问题的地方,就是在添加库目录的时候,只需要添加matlab的库目录,自己的目录是不需要添加的,如果这样做,三个文件中的.lib文件.h文件和.cpp文件放在一起,而.dll文件单独放在Debug文件中。这就是debug同学为什么说“最好是两个都添加”,其实只需要添加一个,他要添加两个是因为他没有把.lib文件和.h .cpp放在一起。

我对debug童鞋的一些没有讲明白的地方说明一下,因为刚建完工程的时候,大家是找不到Debug目录的,这时大家可以先建一个简单的工程(比如输出HelloWorld),先不执行,然后

1、右键项目-->属性-->链接器-->高级-->目标计算机(在右边的窗口),将此处改为MachineX64 (/MACHINE:X64)。

2、点击右上角的“配置管理器”-->活动平台解决方案-->下拉-->新建-->在下拉框里面选择X64,再点击确定。

在平台选项中选择x64。

然后运行一下HelloWorld程序,大家在自己的项目目录中会看到一些Debug文件,大家真正的Debug文件(包含可执行程序)是x64文件中的那个,然后将你们的三个文件放进相应的目录。

然后将debug童鞋那篇文章的.cpp程序覆盖你的HelloWorld.cpp源程序,然后执行,等一会儿就能得到和debug童鞋一样的结果。


后记:我的电脑是64位win7,在网上花了很长时间找用matlab生成Dll和vc连接的资料,网上确实有很多资料,但是由于现在系统各种不一样,各种不兼容,本来对一个新工具不熟悉,碰上一些错误总是不知道为什么,不知道是自己步骤弄错误还是环境有问题,别人明明能成功,而自己照着别人的方法就是缺这文件或者缺那文件,哎,反正各种悲剧。但是在找错误的过程中,我们一直在找各种关于此软件的资料,而且也不知道某些方法对于自己的环境正不正确,就是在多次各种尝试中,我们慢慢地了解到这些软件的一些信息,当成功配置好环境后真的发现好开心!我配置这个环境整整用了一天半,昨天晚上10点多看到debug同学的文章,忽然充满了信心,后来自己按照步骤试了试,发现出问题了,晚上弄到12点还没有搞好。今天又继续弄,有人说vc2010没有64位的,只有32位的,但是可以扩展支持64位,我对这些东西又不太懂,后来又查了x64和IA64,发现我的vc平台中下拉框中是没有x64的,有IA64,所以就想到是不是在安装vc2010的时候如果同时安装Itanium Compliers and Tools和X64 Compliers and Tools,前者会把后者覆盖,后来重新安装vc2010,去掉Itanium Compliers and Tools前面的勾,结果再按照步骤就成功了。本来我想的是,如果还不成功,我就准备在虚拟机上装32位的win7,32位的matlab和32位的vc2010,但是我4G的内存有点虚啊。结果,幸福来的太突然,成功了。

ps:哎,新手感觉在CSDN上还不太会发博客,本来预想的搞篇图文并茂的博客,尽量减少读者的负担,但是新手能力有限,还不知道怎么发图,哎,请理解一个新手的无奈啊!