我不能让我自己的静态库在我的项目中工作

时间:2014-04-07 16:17:42

标签: c++ static-libraries linker-errors

我已经创建了一个静态库项目,并将其添加到具有使用该库的项目的解决方案中。

我在主项目中包含了我需要的类,就像我使用另一个静态库一样,但它会抛出这些错误:

error LNK2019: unresolved external symbol "public: __thiscall NetworkingLib::Base::Base(void)" (??0Base@NetworkingLib@@QAE@XZ) referenced in function _SDL_main
error LNK2019: unresolved external symbol "public: void __thiscall NetworkingLib::Base::Connect(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Connect@Base@NetworkingLib@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) referenced in function _SDL_main

我不知道出了什么问题。我检查了另一个以相同方式使用库的项目,但我找不到任何差异。有没有帮助检测问题?

类NetworkingLib :: Base有一个我想要使用的方法。所以我在主项目中所做的是:

#include "../NetworkLibrary/Base.h"

NetworkingLib::Base *m_pNetworkObj;
m_pNetworkObj = new NetworkingLib::Base();
m_pNetworkObj->Connect("localhost", "80");

我不认为这有什么不妥,所以问题必定在其他地方。

1 个答案:

答案 0 :(得分:2)

在同一解决方案中使用静态库是不够的。您必须将它传递给使用它的项目的链接器。

在Visual Studio中,最好的方法是添加一个&#34;项目参考&#34;。这将设置依赖项,以便项目以正确的顺序构建,并且还选择与使用项目匹配的静态库的版本,即Debug vs Release,x86 vs x64等。