如何链接 DLL 以供 LoadLibrary() 使用(在 Windows 上的 C++ 中)并从调用 exe 导入变
How to link a DLL for LoadLibrary() use (in C++ on Windows ) and do import of variables from the calling exe
在Windows上,我有一个程序可执行文件,它是通过Windows钩子注入DLL的目标。钩子通过强制它执行 LoadLibrary(( 将我的 DLL 注入到目标的程序空间中。我想将特定变量从 exe 导出到 DLL,以便 DLL 可以读取该变量的内容。
由于这是动态链接,因此链接器不会将 exe 和 DLL 链接在一起。我无法构建 DLL,因为我在我尝试从 exe 导入的变量上收到链接器错误 2001 - 未解析的外部。我尝试在DLL中使用它:extern "C" __declspec(dllimport( EGL_UINT8 *ssFrameDataBlock[];
但这并不能解决链接错误。显然我错过了一些步骤。如何从 exe 导出符号并将其导入 DLL 以进行动态链接?导出和导入的每一端的正确语法是什么?
你记得用__declspec(dllexport(装饰可执行文件对变量的定义吗?然后,您需要提供 exe 的 .lib 文件作为 DLL 生成的一部分。
如果不导出至少一个符号(无论是通过 dllexport 还是在 def 文件或命令行中的 EXPORTS 语句(,则不会生成 .lib 文件。
如果你不能为DLL版本提供.lib,你也可以从DLL代码中使用GetProcAddress(((尽管它的名字可以获取任何导出的地址,而不仅仅是函数(。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 如何用参数值调用函数(仅在运行时已知)
- std::cout.imbue()多重调用
- 函数何时会在c++中包含stack_Unwind_Resume调用