C++ 调用 .lib 文件中的函数
2019-06-12 21:48
1646 查看
前一段时间写外挂的时候,做了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” :
完成。
相关文章推荐
- 汇编文件(*.S)如何调用C++文件中的函数
- C++多文件间函数调用及全局变量共享问题
- C/C++文件中函数互相调用
- 在.c文件中调用c++定义的函数
- lua 进阶3--lua文件中调用C++函数
- C/C++(3)C++调用C语言的函数和头文件
- c++中如何在主函数中调用其他文件内的函数?
- c++调用python文件找不到python35_d.lib
- java调用dll.C++调用没有lib的dll中类中的函数.
- c++工程里一个文件怎么调用另外一个文件里的函数
- vs2010下C++调用lib或dll文件
- c++如何一个文件如何调用在同一个工程下的另一个文件的函数
- C++ 调用其他文件的变量或函数
- C文件调用C++文件里的函数
- C/C++文件中函数互相调用
- vs2010下C++调用lib或dll文件
- C++在windows下直接调用dll文件中的函数--封装
- vs2010下C++调用lib或dll文件
- 混合编译:c++文件调用c文件变量和函数、c文件调用c++文件变量和函数