DLL调用函数的问题

flying720 2008-01-28 05:11:00
我用隐式调用一个DLL,包含了该DLL的头文件,在SETTING里连接
了.lib文件,但是调试的时候还是提示不认识DLL中的函数,错误
如下:
MainFrm.obj : error LNK2001: unresolved external symbol _closeCommPort@0

请知道的兄弟帮忙看看什么原因,不胜感激.
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
接分先!
ct_qy 2008-02-14
  • 打赏
  • 举报
回复
在函数声明的地方一律如下写:

#ifdef __cplusplus
extern "C"{
#endif

int __stdcall closeCommPort(void);//返回值类型可改

#ifdef __cplusplus
}
#endif

因为_closeCommPort@0这样的符号连接是__stdcall形式的(C,不是C++),而默认是__cdecl。如果函数声明的地方不统一,可能编译出的lib是__cdecl的,调用dll的地方却是__stdcall的声明,当然找不到符号了。
Yao-debo 2008-02-11
  • 打赏
  • 举报
回复
不好意思,最后一句不是说你的
Yao-debo 2008-02-11
  • 打赏
  • 举报
回复
除了楼上说的以外,你要主要的是 *.lib and *.dll两个文件是否是匹配的;
工作中可能会碰到这样的情况:你修改了DLL项目并重新编译了,但你的DLL和LIB并没有重新部署到你的应用程序项目中;
也就是说文件不一致,仔细检查一下;另外你的标题指出了是VC2003,其实这问题和版本一点关系都没有;
A_KIM 2008-01-31
  • 打赏
  • 举报
回复
出现这个东西有2个可能

1。你没有通过VC中OPTION把LIB连接上,或者通过#pragma comment方法连接上LIB
2。你连接上的LIB库与所使用的头件不对应,也就是说你头文件中申明的函数在LIB中没有定义。
flying720 2008-01-31
  • 打赏
  • 举报
回复
好像不行,兄弟
abuseyoudna1981 2008-01-28
  • 打赏
  • 举报
回复
把DLL和LIB复制到相应的运行路径.
my_girlf 2008-01-28
  • 打赏
  • 举报
回复
在stdafx.h中加上#pragma comment(lib, "×××.lib")试试。
r_swordsman 2008-01-28
  • 打赏
  • 举报
回复
没有这个函数,或者声明不匹配

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧