我在创建dll时,def中这样定义的,哪里错了呢?

bestoak 2007-12-01 02:27:38
我就是想写一个小程序模拟键盘输入方向键的右,在实况足球,NBA live等游戏里面能用.这个钩子哪错了,帮忙看看啊?
ActiveKey.h
#ifndef _KEYDLL_H
#define _KEYDLL_H

class AFX_EXT_CLASS CKeyHook:public CObject
{
public:
CKeyHook();
~CKeyHook();
HHOOK Start();
//安装钩子
BOOL Stop(); //卸载钩子
};
#endif

ActiveKey.cpp
// ActiveKey.cpp : Defines the initialization routines for the DLL.
//

#include "stdafx.h"
#include <afxdllx.h>
#include "ActiveKey.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//Shared data section
#pragma data_seg("sharedata")
HHOOK glhHook=NULL; //钩子句柄。
HINSTANCE glhInstance=NULL; //DLL实例句柄。
#pragma data_seg()

static AFX_EXTENSION_MODULE ActiveKeyDLL = { NULL, NULL };

//键盘钩子处理函数。
extern "C" LRESULT WINAPI KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if( nCode >= 0 )
{
if( wParam == 'k' )//当按下k键时,激活。
{
//实现代码。
keybd_event(39,1,0,0);
Sleep(1000);
keybd_event(39,1,KEYEVENTF_KEYUP,0);
Sleep(500);
}
}
return CallNextHookEx(glhHook,nCode,wParam,lParam);
}

CKeyHook::CKeyHook(){}
CKeyHook::~CKeyHook()
{
if( glhHook )
Stop();
}
//安装全局钩子。
HHOOK CKeyHook::Start()
{
glhHook = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,glhInstance,0);//设置键盘钩子。
return glhHook;
}
//卸载全局钩子。
BOOL CKeyHook::Stop()
{
BOOL bResult = TRUE;
if( glhHook )
bResult = UnhookWindowsHookEx(glhHook);//卸载键盘钩子。
return bResult;
}

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
//如果使用lpReserved参数则删除下面这行
UNREFERENCED_PARAMETER(lpReserved);

if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NOtePadHOOK.DLL Initializing!\n");
//扩展DLL仅初始化一次
if (!AfxInitExtensionModule(ActiveKeyDLL, hInstance))
return 0;
new CDynLinkLibrary(ActiveKeyDLL);
//把DLL加入动态MFC类库中
glhInstance = hInstance;
//插入保存DLL实例句柄
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("NotePadHOOK.DLL Terminating!\n");
//终止这个链接库前调用它
AfxTermExtensionModule(ActiveKeyDLL);
}
return 1;
}

ActiveKey.def
; ActiveKey.def : Declares the module parameters for the DLL.

LIBRARY "ActiveKey"
DESCRIPTION 'ActiveKey Windows Dynamic Link Library'

EXPORTS
; Explicit exports can go here

SETCTIONS
shareddata READ WRITE SHARED


rebuild all的时候说:

.\ActiveKey.def : warning LNK4017: READ statement not supported for the target platform; ignored
ActiveKey.def : error LNK2001: unresolved external symbol SETCTIONS
ActiveKey.def : error LNK2001: unresolved external symbol shareddata
Debug/ActiveKey.lib : fatal error LNK1120: 2 unresolved externals
LINK : fatal error LNK1141: failure during build of exports file
Error executing link.exe.

ActiveKey.dll - 4 error(s), 1 warning(s)

SECTIONS和sharedata有问题么?

如果我把
SETCTIONS
shareddata READ WRITE SHARED
这两行去掉,就能生成dll和lib文件,为什么加上就错了?
新手,请指教啊.

还有一个重要的弱智问题,如何在VC里面创建一个对话框模式应用程序??
...全文
384 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhfa008 2010-09-01
  • 打赏
  • 举报
回复
怎么用def文件导出函数啊?
jsphuang 2007-12-01
  • 打赏
  • 举报
回复
1)ENGLISH 版本:
file->new出现

2)NEW dialogue.
选择project 标签。
选择mfc appwizard[exe]
3)Dialogue base

finish 就行了。

jsphuang 2007-12-01
  • 打赏
  • 举报
回复
SETCTIONS
shareddata READ WRITE SHARED
应该是:
SECTIONS
shareddata READ WRITE SHARED
楼主写错了。
bestoak 2007-12-01
  • 打赏
  • 举报
回复
搞定了,原来是我自己写错了,郁闷.

蓝色问题哪位帮忙解答一下啊,完事就结帖啦
sunlin7 2007-12-01
  • 打赏
  • 举报
回复
系统已经报SETCTIONS出错了,你也仔细看一下啊.
sunlin7 2007-12-01
  • 打赏
  • 举报
回复
SECTIONS
shareddata Read Write Shared
youngwolf 2007-12-01
  • 打赏
  • 举报
回复
EXPORTS
shareddata @1

shareddata是不是你的导出函数名,我看怎么不像。如果是的话,就像上面那样导出。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧