静态库与动态依赖关系

3
我遇到了很多类似的问题,但我并没有真正得到答案。
所以,我有一个依赖于Static.lib的App.exe,而Static.lib又依赖于一个动态库Dynamic.dll。在Static.lib中,我链接到了Dynamic.lib导入库。我确实明白现在App.exe必须在它的目录中有Dynamic.dll才能成功运行,但是当我尝试链接代码时,我得到了一个错误,即App项目找不到Dynamic.lib导入库。
我的问题是,为什么App项目在Static.lib中已经链接了Dynamic.lib导入库,还需要再链接一遍呢?

我在Linux操作系统下工作,所以此时我要做的是将LD_LIBRARY_PATH指向我的共享库位置。在Windows下,我找到了这个链接:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx - Kam
@Kam:我的应用程序确实找到了DLL,但我的问题是为什么我必须在Static.lib和App项目中都有它的导入库?如果它在Static.lib中并且App依赖于它,那么Dynamic.lib不也应该链接到App吗? - Franko Leon Tokalić
因为在Visual Studio中,静态库不会链接到其他库。 - drescherjm
1个回答

2
我的问题是,为什么应用程序项目在已经链接静态库Static.lib的情况下,还需要链接动态导入库Dynamic.lib?
首先,你需要生成静态库,这样你就会使用共享库的头文件进行编译,并与共享库进行链接。
然后,为了生成 .exe 文件,你需要使用静态库的头文件进行编译。但是,由于一些在静态库中找到的方法是在共享库中实现的,因此你需要链接共享库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接