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

bestoak bestoak 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我就是想写一个小程序模拟键盘输入方向键的右,在实况足球,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里面创建一个对话框模式应用程序??
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
bestoak
进程/线程/DLL 15,466 成员 49,169 内容