| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 327 人关注过本帖
标题:[求助]DLL调用约定错误
收藏  订阅  推荐  打印

[求助]DLL调用约定错误

[求助]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键 ,卸载钩子

谢谢大家!

http://bbs.bc-cn.net/viewFile.asp?BoardID=6&ID=29062

TOP

mfc默认是cdecl函数调用方式.

你试下
int __stdcall SetHook(HWND hwnd)

★★★★★欢迎光临我的博客 ★★★★★
http://www.ozd.cn

TOP

回复:(Janlex)mfc默认是cdecl函数调用方式.你试下i...

谢谢你
问题解决了

欢迎光临我的网站: http://redice.bookold.net/
我的博客:http://blog.bookold.net/
生于忧患 死于安乐

TOP

共有 326 人关注过本帖
发新话题
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.077599 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved