2011-05-05 133 views
0

我有一个有两个项目的VS2010解决方案。第一个项目[DevLib]是一个基本上是另一个lib [ExtLib]的包装器,我们没有它的源代码。建立这个lib工作正常。链接到链接到静态.lib的静态.lib的问题

第二个项目[TestApp]然后使用DevLib。当建立TestApp我得到:

DevLib.lib(DevClass.obj) : error LNK2019: unresolved external symbol _ExtLib_SomeFunction referenced in function “public: bool __thiscall DevClass::Open(void)” ([email protected]@@QAE_NXZ) 

所以链接器找到了在DevLib的功能,但有链接到现在应该DevLib链接在EXTLIB的功能问题。我有点迷失在这里,这是否会为任何人敲响警钟?

回答

2

静态库不会与其他静态库链接。为了生成最终的可执行文件,您需要将代码与所有涉及的静态库链接起来。换句话说,如果libA依赖于libB,那么最终的链接将不得不针对libA和libB。

+0

好的,如果我不想在其他代码(授权问题)中链接到外部库,那么我必须创建一个动态库? – imightbewrong 2011-05-05 16:00:39

+0

@might是的 - 一个DLL实际上比一个库更像一个可执行文件,所以它本身就拥有它所依赖的静态库中的所有代码。 – 2011-05-05 16:02:51

+0

好的,这是一个挫折,但感谢您的帮助! – imightbewrong 2011-05-05 16:04:14