各位大侠,我有一个vc6下的WinLockDll.dll
使用:
1、#include "WinLockDll.h"
void CTestDllDlg::OnBnClickedOk()
{
Desktop_Show_Hide(TRUE);
}
2、向工程加入lb文件编译出错:
TestDll error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int __stdcall Desktop_Show_Hide(int)" (__imp_?Desktop_Show_Hide@@YGHH@Z) ,该符号在函数 "public: void __thiscall CTestDllDlg::OnBnClickedOk(void)" (?OnBnClickedOk@CTestDllDlg@@QAEXXZ) 中被引用
痛苦,这是怎么回事?

解决方案 »

  1.   

    有没有在dll和exe中区分
    __declspec(dllimport)和__declspec(dllexport)
      

  2.   

    难道要extern "C" xxxx ?
      

  3.   

    Desktop_Show_Hide只提供了声明没提供实现。
    或者是你没链接相应的.lib?
      

  4.   

    你们设想的情况我都想到了,没有问题。
    情况一、用宏区分了
    情况二、我是在MFC程序下使用
    情况三、Desktop_Show_Hide的实现在dll中,lib文件加入到了工程中
    猜测:
    是否是机器中毒了?
      

  5.   

    链接时函数名称问题。
    在DLL工程中加入 *.def文件定义导出函数
    这样WinLockDll.dll中导出的Desktop_Show_Hide就不再是_?Desktop_Show_Hide@@YGHH@Z这种C++风格的函数名
      

  6.   

    你们设想的情况我都想到了,没有问题。
    情况一、用宏区分了
    情况二、我是在MFC程序下使用
    情况三、Desktop_Show_Hide的实现在dll中,lib文件加入到了工程中
    猜测:
    是否是机器中毒了?
    那你换台机子试试看了~~ 
    感觉应该是代码问题吧~~
    最好贴点代码看看~~~
      

  7.   

    连接到DLL 要有相应的lib文件
    DLL的导出函数是C风格吗?DLL是用VC开发的吗? 如果不是,又没按C风格处理,可能C++的重命名会不一至,导致符号无法解析