C++ 调用 .lib 文件中的函数

前一段时间写外挂的时候,做了4个 dll 项目,每个 dll 对应一个功能点,一开始用起来没什么问题,但是后来发现游戏数据每周更新一次,我就要依次修改这四个项目中的 .h 头文件中的数据,是在太累人了 !
在这里插入图片描述
于是打算把所有的取数据函数都放在 .lib 文件里,供所有的 .dll 文件调用。这里只做一个简单的模拟。
首先打开 vs2015 创建一个 “静态库” 项目 “Test”:
在这里插入图片描述
在 Test.h 中添加如下代码:

#pragma once
int test();

在 Test.cpp 文件下添加如下代码:

#include "pch.h"
#include "Test.h"

int test() {
	return 1;
}

点击 “生成解决方案” :
在这里插入图片描述之后来到我的 .dll 项目中(其实其他一切 C++ 都可以)。右键项目-属性-所有配置-配置属性-链接器-输入-附加依赖项 , 写入你的 lib 文件名:
在这里插入图片描述再进入 链接器-常规-附加库目录 , 将你 lib 文件路径添加进去:
在这里插入图片描述在这里插入图片描述在你程序的开头加入对 Test.lib 和 Test.h 的引用:
(注意 .h 头文件的路径应该根据实际情况而定!)

#include "..\..\Test\Test\Test.h"
#pragma comment(lib,"Test.lib")

在这里插入图片描述在某个按钮事件中调用 Test.h 中的 test() 函数:

CString s;
s.Format("%d", test());
MessageBox("当前地图ID:" + s);

在这里插入图片描述编译以下,报错:

error LNK2019: 无法解析的外部符号 __except_handler4_common,该符号在函数 __except_handler4 中被引用

在这里插入图片描述
解决办法:右键项目-属性-所有配置-配置属性-链接器-输入 。 将“忽略所有默认库” 改为 “否” , 在 “忽略特定默认库” 中添加 “libcmtd.lib” :
在这里插入图片描述再次编译,没有问题:
在这里插入图片描述使用 dll注入器 注入 dll 到游戏,点击刚刚我们编写的按钮,输出字符串 “1” :
在这里插入图片描述完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值