Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
Does Windows linker resolve undefined symbols in DLL with LoadLibrary?
在 Linux 中,当我使用可执行文件(或共享库(中的dlopen()
加载共享库时,我希望这个库中未定义的符号将被自动解析,当然只要可执行文件(或共享库(定义了这些符号。
例如,我有库A,其中包含以下头文件和源文件:
#pragma once
int funcA();
#include "A/header.h"
int funcA() {}
我也有带有此源文件的库B:
#include "A/header.h"
void funcB() {
funcA();
}
对于库B,我指定了库 A 标头的路径,但我没有将库A链接到库B。
在这种情况下,如果我通过调用库 A 从库A加载库 Bdlopen()
,那么库 B 中未定义的符号funcA
将被解析,因此库B将能够调用funcA
。
Windows也是如此,还是我必须手动查找我需要的所有符号的地址?
在研究了已经回答的关于堆栈溢出的问题之后:
- 在 dll 中解析外部符号
- 使用 MinGW 编译为带有一些未定义引用的.dll
我意识到,如果我想在Windows上做类似的事情,我必须为我的共享库A创建一些导入库。
起初我认为它只适用于 MSVC,但看起来 MinGW 也需要导入库,因为这是 Windows 上的工作方式。如果我错过了什么,请纠正我。
对我来说,这是一个很大的禁忌,所以可能会改变我使用共享库的方式,通过附加接口显式检索我需要的每个符号。幸运的是,它们并不多。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
- CPP DLL 自定义操作代码在安装过程中未执行
- 在QtCreator中链接dll的未定义引用错误
- 未定义的引用:dll -> 自由函数 ->重载运算符 -> 模板化结构
- 未在单例 DLL 中定义的纯虚函数
- Dll未在Firefox中加载,但在自定义应用程序中加载
- MinGw VC DLL中C++符号的未定义符号
- 对.dll库中函数的未定义引用
- 使用xerces链接DLL会给出未定义的符号
- MinGW 与 MSVC 的 dll 库问题链接(未定义的引用)
- 解析来自 dll(so)的C++未定义的引用