jackadandy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望30点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:2047回复:11

痛苦!error LNK2001: unresolved external symbol

楼主#
更多 发布于:2005-04-21 13:46
调用DLL中的函数,提示
Linking...
testusbDlg.obj : error LNK2001: unresolved external symbol _CT_open@12
testusbDlg.obj : error LNK2001: unresolved external symbol _CT_close@4

我已经在project->setting->link加.lib了。


包含dll的api的头文件:
#include <windows.h>
#ifdef __cplusplus
extern \"C\"{
#endif
    
_declspec(dllexport) HANDLE  WINAPI  CT_open();
    
_declspec(dllexport) int WINAPI CT_close();  
                                               
 #ifdef __cplusplus
}
#endif
这个文件也加到project中了。

dll中的.def文件:
LIBRARY      \"wdhidu\"
DESCRIPTION  \'wdhidu Windows Dynamic Link Library\'

EXPORTS
CT_open
CT_close

到底是哪出错了哪?是不是.def错了??
搞了一天也没搞明白,望各位大虾指教!谢谢!!!!
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-21 15:02
dllexport???
看到啦?
dllimport就行了。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-21 15:11
dllexport???
看到啦?
HANDLE WINAPI CT_open();就行了。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
jackadandy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望30点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-21 15:24
改了一下,还是不行啊!!!
是不是.def中的问题啊??
搞不懂!!
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-21 15:46
兄弟,你把头文件拷贝过来再改啊。在你的项目中把“_declspec(dllexport)”删除。
export:输出;import:输入。你说吧,问题还能在哪里?仔细看看,检查一下。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
jackadandy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望30点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-21 15:53
你把它改成import逻辑上不通啊。
这些函数是dll导出给用户使用的,应该export。
实际情况是程序已经找到这些函数了(编译已经通过),只是连接的时候出问题。
不知道这样理解对不对。
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-21 15:57
“兄弟,你把头文件拷贝过来再改啊。”
看清楚了我的原话。在DLL端当然是export。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
jackadandy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望30点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-21 16:04

改了之后的错误是
error LNK2001: unresolved external symbol __imp__CT_open@12
error LNK2001: unresolved external symbol __imp__CT_close@4
应该还是.lib有问题吧???
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-04-21 16:19
lib文件的路径写对了没有?
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
jackadandy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望30点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-04-21 16:26
改好了
把头文件中的
#ifdef __cplusplus
extern \"C\"{
#endif
去掉
在编写和声明函数时,函数名前加上_stdcall就行了。
谢谢你的帮助。
怎么给你分哪??
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-04-21 16:33
不客气,我不知道怎么给分。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
jackadandy
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2016-01-09
  • 粉丝1
  • 关注1
  • 积分5分
  • 威望30点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-04-21 16:43
那精神上感谢你,呵呵。
哎,忙了一天,终于好了。
万里长征第一步啊,该测试动态库了,路漫漫啊。
游客

返回顶部