dll工程里面写了extern "C" _declspec(dllexport) HHOOK _InstallHook(HWND _hWnd,DWORD _dwMessage);
HHOOK _InstallHook(HWND _hWnd,DWORD _dwMessage)
{
hWnd=_hWnd;
dwMessage=_dwMessage;
hHook=SetWindowsHookEx(WH_KEYBOARD,_HookProc,hInstance,NULL);
return hHook;
}在客户端文件里面写的时候写了typedef int (WINAPI *LPFN)(HWND,DWORD);
LPFN _InstallHook;
hInstDLL=LoadLibrary("KeyHook.dll");
if (hInstDLL==NULL)
return MessageBox(hwnd,"cannot find the KeyHook.dll file","dll error",MB_OK);
_InstallHook=GetProcAddress(hInstDLL,"_InstallHook");
if(_InstallHook==NULL)
EndDialog(hwnd,NULL);
_InstallHook(hwnd,WM_HOOK);//cannot convert from 'int (__stdcall *)(void)' to 'int (__stdcall *)(struct HWND__ *,unsigned long)'尼玛 看dll部分两天了,头大了
我明明导出的时候写了参数,在调用的时候竟然不让用参数

解决方案 »

  1.   

    函数导出放到.def文件中extern "C" int __stdcall InstallHook(HWND _hWnd,DWORD _dwMessage)
    调用Dll..........
    typedef int (__stdcall *fnInstallHook)(HWND _hWnd,DWORD _dwMessage);
    ......................
      

  2.   

    extern "C" __declspec(dllexport) HHOOK _InstallHook(HWND _hWnd,DWORD _dwMessage);
    这里是两条下划线把
    另外
    typedef int (WINAPI *LPFN)(HWND,DWORD);
    这里的返回值不一致吧
      

  3.   

    _InstallHook=GetProcAddress(hInstDLL,"_InstallHook");
    错误应该在这句吧?
    需要强制转换!