调用动态库中的c(__stdcall)函数,在c中如下调用:
//declare:
extern __declspec(dllimport) void __stdcall dllfunc(void);//program:
dllfunc();是合法的。我在C++中的声明:
(1)extern "C" __declspec(dllimport) void dllfunc(void);
编译通过,但是调用出错。因为不是__stdcall
(2)extern "C" __declspec(dllimport) void __stdcall dllfunc(void);
or extern void __stdcall dllfunc();
编译通不过:
error LNK2001: unresolved external symbol _dllfunc@0我该怎么办?
//declare:
extern __declspec(dllimport) void __stdcall dllfunc(void);//program:
dllfunc();是合法的。我在C++中的声明:
(1)extern "C" __declspec(dllimport) void dllfunc(void);
编译通过,但是调用出错。因为不是__stdcall
(2)extern "C" __declspec(dllimport) void __stdcall dllfunc(void);
or extern void __stdcall dllfunc();
编译通不过:
error LNK2001: unresolved external symbol _dllfunc@0我该怎么办?
{
__declspec(dllimport) void __stdcall dllfunc(void);
}
extern "C" int __stdcall Open();然后在.def中
EXPORTS
Open @1
extern "C" __declspec(dllexport) __stdcall int mydllfunc(int);
我在使用动态库时导入:
extern "C" __declspec(dllimport) int mydllfunc(int);
和
extern "C" __declspec(dllimport) int __stdcall mydllfunc(int);两种声明都是正确的吗?两种情况有什么区别?
你的这个问我理解就是要对应。不然,写规则的人就不会这末规定了。:)
extern "C" __declspec(dllexport) __stdcall int mydllfunc(int);
我在使用动态库时导入:
//这应该是非法的吧?可是为什么编译器能够通过
extern "C" __declspec(dllimport) int mydllfunc(int);
和
//这应该是正确的,为什么编译时会认为__stdcall mydllfunc(int)是无法解析的外部符号?
extern "C" __declspec(dllimport) int __stdcall mydllfunc(int);