| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1659 人关注过本帖
标题:[求助]DLL调用约定错误
只看楼主 加入收藏
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
结帖率:72.73%
收藏
 问题点数:0 回复次数:2 
[求助]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

搜索更多相关主题的帖子: DLL 动态链接库 约定 
2007-10-15 21:59
Janlex
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:303
专家分:0
注 册:2006-9-12
收藏
得分:0 

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

你试下
int __stdcall SetHook(HWND hwnd)


★★★★★欢迎光临我的博客 ★★★★★
http://www.
2007-10-15 22:24
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
收藏
得分:0 
回复:(Janlex)mfc默认是cdecl函数调用方式.你试下i...

谢谢你
问题解决了


鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2007-10-15 22:27
快速回复:[求助]DLL调用约定错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019481 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved