[求助]DLL调用约定错误
最近学习VC++ 写动态链接库,编译成功一个动态连接库工程后,我用VB调用该动态连接库但是却出现了错误"DLL调用约定错误".
仔细检查参数类型仍没发现错误,请各位帮我看看-人多力量大!嘿嘿
错误提示(如下图所示图片)
此主题相关图片如下:
动态连接库里写了一个HOOK函数(别害怕,我不会搞破坏的,哈哈),具体代码如下:
源文件Hook.cpp
#include <windows.h>
HHOOK g_hKeyboard=NULL;
#pragma data_seg("MySec")
HWND g_hWnd=NULL;
#pragma data_seg()
LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(VK_F2==wParam)
{
MessageBox(0,"F2被按下!",NULL,0);
SendMessage(g_hWnd,WM_CLOSE,0,0);
UnhookWindowsHookEx(g_hKeyboard);
}
return 1;
}
int SetHook(HWND hwnd)
{
g_hWnd=hwnd;
g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook"),0);
return 1;
}
模块定义文件Hook.def
LIBRARY Hook
EXPORTS
SetHook
SEGMENTS
MySec READ WRITE SHARED
注: 这个动态连接库工程是我的偶像"孙鑫"老师写的,在VC++中可以被成功调用.因此大家不必考虑动态链接库是否有问题.
在VB中我是这样声明的:
Private Declare Function SetHook Lib "C:\Hook.dll" (ByVal hwnd As Long) As Long
调用过程为:
Private Sub Command1_Click()
SetHook Me.hwnd
End Sub
附上面提到的所有文件:
再次声名该程序没有任何坏意.你可以放心下载测试.按F2键 ,卸载钩子
谢谢大家!