我似乎在这里误解了一些东西。我有一个 DLL(比如 DLL_1),其中有一些 C++ 类导出供客户使用。
静态库使用这些导出的类(例如 SLib_1)。
还有另一个 DLL(比如 DLL_Client)仅依赖于上述静态库,因此链接到 SLib_1。所以我有:
DLL_Client ==> SLib_1 ==> DLL_1
在构建 SLib_1 时,链接器是否解析了从 DLL_1 导出的类?该部分是否仅在构建 DLL_Client 时发生?
根据上面的答案,我还有一个问题。考虑到我还有另一个静态库,比如 SLib_2。如果我像这样重绘上面的依赖路径:
DLL_Client ==> SLib_2 ==> SLib_1 ==> DLL_1(每个模块只知道并链接到它后面的模块)
DLL_1 导出的符号是否对 DLL_Client 可见?在编译/链接整个设置时我没有问题。我的问题只发生在运行时。也就是说,当我使用Dependency Walker 加载DLL_Client 时,我发现它抱怨无法解析DLL_1 中的导出函数。
是什么赋予了?