我在创建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里面创建一个对话框模式应用程序??
...全文

相关推荐

模块定义文件创建与调用DLL项目实战指南

动态链接库(DLL)是一种程序模块化技术,它允许程序在运行时动态地加载和卸载库模块,以共享代码和资源,提高程序的灵活性和可维护性。DLL技术被广泛应用于操作系统和应用程序的开发中,特别是在Windows平台上。模块定义文件(DEF文件)在动态链接库(DLL)的开发中扮演着重要的角色。它们在导出函数和数据方面提供了一个标准化的方法,使它们能够被其他程序调用。在本章节中,我们将深入探讨DEF文件的基本概念、结构和编写规则。DEF文件是一种文本文件,其扩展名为.def。

你这人真狗

vs2019 c++创建dll,使用def

先创建。 在源文件里面添加def 在vs2019里面会自动添加,不用手动设置。 创建test.cpp和test.h 在cpp文件里面写上如图的代码,test.h什么都不写. 接下来使用def文件,如题 写完发现写的真烂,只是百度到的最新版本都是2013的了, 自己研究了半天才会,特意记录一下,希望可以帮助到别人. ...

结果是套娃

VS2008开发之使用.def文件来生成dll库文件

说明:有了.def文件,其实就不需要用dll库对应的头文件了。而且.def文件其实主要是给显示加载dll时候用的,即是利用LoadLibrary、GetProcAddress和FreeLibrary三部曲来完成第三方dll库的使用。只需要dll库,不需要头文件和.lib文件的一种机制。 1、新建一个dll工程 2、添加一个cpp文件来实现dll库的接口功能 直接附上我的测试源码: ...

JimmyHoo0000

技术转移机构如何基于数据提升项目撮合精准度?.docx

技术转移机构如何基于数据提升项目撮合精准度?

BIZKEEN

超扭滑模与快速终端滑模的永磁同步电机无感控制:理论、离散化实现与仿真研究(Simulink仿真实现)

内容概要:本文系统研究了超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)在永磁同步电机(PMSM)无感控制中的应用,重点涵盖其理论基础、离散化实现方法及Simulink仿真验证。文章深入阐述了两种高阶滑模控制策略的设计原理,利用磁链无感观测技术实现转子位置与速度的精确估计,从而省去物理传感器,有效提升了系统的可靠性与鲁棒性。同时,提供了完整的Simulink仿真模型构建方案,包括控制器设计、关键参数整定及动态响应性能分析,充分验证了所提出的方法在零速与低速工况下的卓越控制性能和有效性。; 适合人群:具备电机控制、现代控制理论基础知识及熟练掌握MATLAB/Simulink仿真技能的研究生、科研人员与工程技术人员。; 使用场景及目标:①深入理解高阶滑模控制在电机驱动系统中的设计思想与具体实现;②掌握基于滑模观测器的无感控制核心技术;③开展永磁同步电机高性能控制算法的理论研究、仿真验证与工程化探索。; 阅读建议:建议将文中详尽的理论推导与Simulink仿真模型相结合进行学习,重点关注滑模面的构建、抖振抑制策略的实施以及离散化处理的细节,有条件的研究者可进一步将算法移植到DSP等硬件平台进行实验验证,以深化对理论的理解并检验其实际应用效果。

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