调用动态库中的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我该怎么办?
解决方案 »
- CMFCToolBar空间问题:
- VC多窗口关联
- MSComm控件,每一次接收数据长度是不定长的,如何在每一次CommEvReceive事件中,确保把数据一次性读取完毕!在线期待中....
- 没有人遇到过这种情况吗? 系统的ms chart control控件design-time license丢失
- 用过appface的大哥大姐请进来指导一下!
- socket数据收发的问题,在线等
- 如何通过编程获取媒体文件的摘要属性?
- WinSocket里面的select写在什么地方??(搞了几天了,郁闷死了)
- 求教:怎样做一个简单的仓库库管理系统?????
- 一个关于窗口位置的和SetWindowPos的使用问题
- 请问在vc中怎样追踪调试sql 存储过程?
- 关于__stdcall 与 __cdecl 的问题。
{
__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);