阅读:2047回复:11
痛苦!error LNK2001: unresolved external symbol
调用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错了?? 搞了一天也没搞明白,望各位大虾指教!谢谢!!!! |
|
沙发#
发布于:2005-04-21 15:02
dllexport???
看到啦? dllimport就行了。 |
|
|
板凳#
发布于:2005-04-21 15:11
dllexport???
看到啦? HANDLE WINAPI CT_open();就行了。 |
|
|
地板#
发布于:2005-04-21 15:24
改了一下,还是不行啊!!!
是不是.def中的问题啊?? 搞不懂!! |
|
地下室#
发布于:2005-04-21 15:46
兄弟,你把头文件拷贝过来再改啊。在你的项目中把“_declspec(dllexport)”删除。
export:输出;import:输入。你说吧,问题还能在哪里?仔细看看,检查一下。 |
|
|
5楼#
发布于:2005-04-21 15:53
你把它改成import逻辑上不通啊。
这些函数是dll导出给用户使用的,应该export。 实际情况是程序已经找到这些函数了(编译已经通过),只是连接的时候出问题。 不知道这样理解对不对。 |
|
6楼#
发布于:2005-04-21 15:57
“兄弟,你把头文件拷贝过来再改啊。”
看清楚了我的原话。在DLL端当然是export。 |
|
|
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有问题吧??? |
|
8楼#
发布于:2005-04-21 16:19
lib文件的路径写对了没有?
|
|
|
9楼#
发布于:2005-04-21 16:26
改好了
把头文件中的 #ifdef __cplusplus extern \"C\"{ #endif 去掉 在编写和声明函数时,函数名前加上_stdcall就行了。 谢谢你的帮助。 怎么给你分哪?? |
|
10楼#
发布于:2005-04-21 16:33
不客气,我不知道怎么给分。
|
|
|
11楼#
发布于:2005-04-21 16:43
那精神上感谢你,呵呵。
哎,忙了一天,终于好了。 万里长征第一步啊,该测试动态库了,路漫漫啊。 |
|