matlab2012b与VS2012混编总结(3)——关于用mcc指令生成的文件集中没有ctf文件

注意:最终的最终发现,matlab2012b虽然可以生成链接库等,vs2012也能调用,但是执行不了,找了好久也没有找到好的解决办法,最后改用matlab2013a,它可以直接识别vs2012的编译器,不需要添加别的文件什么的,其他的和以下所写的一样。或者用matlab2010b和vs2010也可以完美匹配哦!!!

 

在上一篇博文中,我尝试了很多方法和解决方案,最终成功的在matlab2012b下通过mcc指令编译产生dll和lib动静态链接库以及其他文件,如果借助于dll,lib和h文件即可成功实现matlab2012b与VS2012之间的混编(其实也是可以的,之后我会介绍),没有某些强迫症的话就没必要看这篇博文了。

 

我之前在有一篇文章里看到说matlab与VC++混编需要四个文件,.lib,.dll,.h,和 .ctf后缀的文件,于是啊,我开始纠结我在混编时在VS中生成代码时出现的各种问题是不是因为缺少了ctf文件(事实证明不是因为缺少此文件,如果大家尝试过各种方法之后仍然提示错误,可以尝试添加个ctf文件,有时候这也是说不准的,大概因为我还是菜鸟吧,不懂修改其他文件,只好什么都试一下),我上篇博文中的两个指令:mcc -t -W cpplib:MyAdd -T link:lib MyAdd.m和mcc -W cpplib:MyAdd -T link:lib MyAdd.m生成的文件中并没有ctf后缀的文件。

 

在看了相关文件之后说在指令后面添加-C选项即可产生ctf后缀文件,原因是:在matlab2007之后的版本中已经把ctf文件压缩到EXE格式的文件中,所以在生成的文件中不会单独分离出ctf文件,(其实在生成的时候认真观察还是有ctf文件出现的,但是出现了之后大概1秒的时间吧,就消失了);要想生成ctf文件就需要在上面的两条指令的最后面添上-C:

mcc -t -W cpplib:MyAdd -T link:lib MyAdd.m -C

mcc -W cpplib:MyAdd -T link:lib MyAdd.m -C

用于将ctf文件分离出来。但是很不幸,我在运行这两条指令时出现了以下错误:

Depfun error: 'Unable to locate –C as a function on the MATLAB path'
       Error using mcc
      Error executing mcc, return status = 1 (0x1).

 

2014年5月21日更新:昨天由于matlab出问题,重装了一下,发现上面的两条指令完全可以运行,一点问题也没有了!

 

在网上搜索了一番,有以下几种解决办法

http://www.cnblogs.com/yingying0907/archive/2012/11/11/2710826.html中说:当前编译路径没有修改,错误已经提示了,将当前matlab路径改到你这个m文件所在的路径下,(点击运行按钮会出现 change directory,选择即可)再进行编译!可是matlab的当前路径就是在改m文件所在的路径下。

还有说什么设置好编译器,可是这些我都已经弄好了,也试了其他网页上的各种方法仍然没能解决这个问题,于是乎放弃了。

 失败!!!

 

所以我想着换一种编译方法,在需找上面解决办法的同时,我看到有一篇文章写的是利用MATLAB  compiler编译产生链接库的过程中可以通过设置产生ctf文件。

 

下面我介绍用MATLAB compiler编译链接库的过程:

在MATLAB的主界面菜单栏中选择MATLAB compiler,如下图所示:

matlab2012b与VS2012混编总结(3)——关于用mcc指令生成的文件集中没有ctf文件

选择完之后出现以下对话框:

 


matlab2012b与VS2012混编总结(3)——关于用mcc指令生成的文件集中没有ctf文件

 

点击OK,则新的编译项目创建成功,如下图所示:

matlab2012b与VS2012混编总结(3)——关于用mcc指令生成的文件集中没有ctf文件

点击设置按钮,其他的选项相信大家都能看明白,唯独要设置ctf的输出问题,这是输出ctf文件的关键步骤,如下图所示:

 

matlab2012b与VS2012混编总结(3)——关于用mcc指令生成的文件集中没有ctf文件

        在设置完之后关闭窗口,然后在编译界面中添加要编译的m文件,点击Add files,选择你需要编译成链接库的m文件,然后点击编译按钮,完成之后你就可以在你上面那个对话框中的output里的看到五个文件:.lib,.dll,.h,.ctf后缀的文件,以及一个readme.txt文件。至此,工作就完成了!!!!

成功!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值