matlab c++ 混合编程的一个问题

18 篇文章 0 订阅

操作系统 win xp sp3

matlab 2010a

matlab编译器  msvc6.0

调用dll的环境   vs2010

 

在matlab下使用mcc命令生成了动态链接库dll文件,向vc工程中加入了相应的库和目录,把生成dll时同时生成的.h和.cpp文件加入了工程,在没有调用函数的情况下编译,产生了下面错误:

1>c:/documents and settings/zshtang/桌面/videoplatform/pose_estimate.cpp(173): error C2491: 'pose_estimate_tangzesheng' : definition of dllimport function not allowed

 

 

出错代码:

 


注:代码是由matlab编译器自动生成,并非本人所写。

如果有人遇到过类似问题,帮忙说下解决办法,谢谢!

 


 

 

查找各种说法尝试无效后,在微软的网站处找到一个解释,参考如下网站:

http://support.microsoft.com/kb/815647/en-us?fr=1

 

在这个网页里有这样的描述:

 

You cannot apply the __declspec(dllimport) keyword to implement a function. For example, when you try to define data members (including static data members and functions) as dllimport functions, you receive the following Compiler C2491 error message:

'identifier' : definition of dllimport function not allowed
我理解为不能向动态链接库中引入静态数据成员或静态函数,否则会导致出现前面的错误。
我通过注释上边的matlab函数文件中的 load('env.mat') [加载训练数据],然后重新生成动态链接库,再次重复前边的过程,bug消失了。呵呵~   但麻烦也来了, 不能通过matlab直接加载训练数据,就只能自己来动手加载了。这事个复杂的工作,但只能硬着头皮干了。呵呵~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值