使用注入DLL文件中的库
Use libraries inside injection DLL file
我正在为一个游戏开发内部mod菜单,我想在DLL中使用CPR库,以便在注入后从服务器获得最新版本的偏移量。现在,我用vcpkg获得了CPR包的静态版本,并将所有.lib文件和include文件移动到我的项目中,将它们添加到我的include和lib目录中,然后像这样使用它:
#pragma once
#pragma comment(lib, "crypt32.lib")
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "zlib.lib")
#pragma comment(lib, "libcurl.lib")
#pragma comment(lib, "cpr.lib")
#include "cpr/cpr.h"
cpr::Response r = cpr::Get(cpr::Url{ "https://myurl.com/getoffset" });
cout << r.status_code << endl;
cout << r.text << endl;
string json= r.text;
它工作得很好,没有任何问题,但正如你所看到的,它有点乱#pragma注释"所以我尝试使用CPR的动态版本,所以在编译它之后,我有3个DLL文件:
- myMode.dll
- libcurl.dll
- zlib1.dll
现在的问题是;zlib1.dll";以及";libcurl.dll";在.exe文件附近的游戏文件夹内,否则不会注入;有什么方法可以在我的DLL中找到它们并告诉DLL使用那个位置吗?
或者只是这样使用它,但去掉这个"#pragma注释"不知怎么的,在visualstudio中为他们添加位置?
您需要了解的关于DLL搜索路径的一切都在这里有很好的文档记录。
最简单的方法是只使用libcurl和zlib静态链接,而不是使用DLL存根库。这有什么不利之处?
否则,所有依赖DLL都需要位于EXE文件夹、当前工作目录(通常与EXE文件夹相同(、系统目录(no!(或PATH中。
如果您的扩展有一个安装程序,那么它可能只是用DLL的安装文件夹及其所有依赖项更新PATH。
至于";凌乱的";pragma comment
语句。标准方法是通过VisualStudio项目IDE添加这些。这样可以更好地控制链接搜索路径,这样就不必将所有stub.lib文件都转储到构建的同一文件夹中。
相关文章:
- 挂起和取消挂起一个文件DLL
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 将 dll 文件注入 UWP
- 加载"D:UsersPublicDocumentsopencvbuildx64vc14binopencv_world340d.dll",找不到或打开PDB文件
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 在使用 Clang 编译 DLL 时指定 DEF 文件
- 从 .lib 文件创建一个.dll文件
- 可执行文件C++包括.obj,.lib和.dll吗?
- python37.dll在可执行文件中未链接
- 链接器找不到导入的 DLL 的 LIB 文件
- DLL:当 SDK 头文件不使用 __declspec(dllexport) 时,我可以使用它吗
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- 如何在 CMake 超级生成中查找 dll/so 文件
- 在任何平台上执行任何Qt5应用程序的重要dll文件是什么(运行时文件dll)
- 在C++的应用程序中包括文件(dll,txt等.exe
- 反编译文件.dll
- 另一台电脑上的C++程序所需的文件/DLL