matlab调用vc生产的dll问题,先谢了

我用vc制作了一个简单的dll,工程名为test2
a.h文件里内容如下:

extern "C"

_declspec(dllexport) int add(int a,int b);

a.cpp里内容如下:

#include"a.h"
_declspec(dllexport) int add(int a,int b)
{
return a+b;
}

把test2.dll和a.h放在一个文件夹里,把matlab的路径改到该文件夹路径下

结果如下:

>> unloadlibrary('test2')
>> loadlibrary('test2','a.h')
>> libfunctions('test2')

No methods for class lib.test2 or no class lib.test2.

>>

这是怎么回事,我试了版本vc6,vs2008,matlab2007,matlab2009,都是这种结果

谢谢!
大神帮帮忙吧,分不多,都给了

extern "C"

_declspec(dllexport) int add(int a,int b);
是有test2.lib的方式

反正vc的动态调用似乎要用这样方式:
int c;
{
typedef int (WINAPI MYADD)(int a,int b);
MYADD *add = 0;
HINSTANCE hDLLDrv = LoadLibrary("test2.dll");
if(hDLLDrv)
{
add = (MYADD *)GetProcAddress(hDLLDrv, "add");
}

if(add != NULL)
c=add(1,2);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-23
你的代码总体没有错,只是改变一个地方就可以了,把_declspec改成__declspec即可。注意:__declspec左边是两个下划线。
相似回答