调用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错了??
搞了一天也没搞明白,望各位大虾指教!谢谢!!!!

解决方案 »

  1.   

    我已经在project->setting->link加.lib了。--------------------------------------------真的加上去了?这样试试看#pragma comment(lib,"***.lib") 其中 ***.lib 是你的那个 lib名字
      

  2.   

    CT_open@12
    _CT_close@4
    你的这两个函数是带参数的而你导出的时候没有待参数阿_declspec(dllexport) HANDLE WINAPI CT_open(); _declspec(dllexport) int WINAPI CT_close(); 这两句已经具有了导出功能,把你的参数加上,再导出看看
      

  3.   

    _CT_open@12
    _CT_close@4
    你的这两个函数是有参数的_declspec(dllexport) HANDLE WINAPI CT_open(); _declspec(dllexport) int WINAPI CT_close(); 导出时没有加参数,加上参数看看
      

  4.   

    cnwolf(独狼) : 不需要参数。
      

  5.   

    #pragma comment(lib,"***.lib")是加在应用程序中吧?我加上了,还是不行啊!
    另:回独狼
    导出函数是有参数的,我省略了。
    我的直觉是不是.def中导出的函数名不对阿?
      

  6.   

    to快乐机器:
    我已经把.lib考到工程目录下了,所以应该不存在什么路径的问题。搞不懂哪里出问题了??
      

  7.   

    肯定是 .lib 的错误了。要么是版本不一致,要么是没有包含进去。仔细去检查看看啊!
      

  8.   

    这两个方法是哪个LIB里面的啊?版本错误??不可能阿.动态库是我自己做的,不存在这个问题啊。如果没包含进去,那么编译的时候就应该出错了,为什么连接的时候才出错阿??
    ======================================
    这个说法可不对,编译通过是因为包含了头文件,和LIB没有关系哦。
      

  9.   

    实现了。
    怎么改都还是不能识别他们。
    应该是.lib的错误,就不知道错哪了。
      

  10.   

    找出错误了!
    包含dll的api的头文件中去掉
    #ifdef __cplusplus
    extern "C"{
    #endif
    在函数生命和定义时,加上_stdcall就可以了!
    谢谢大家的帮忙!!!
    给分!!