我创建了一个静态库项目,并将其添加到具有使用该库的项目的解决方案中。
我在主项目中包含了我需要的类,就像我在另一个静态库中一样,但它抛出了这些错误:
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");
我不认为这有什么问题,所以问题一定出在其他地方。
最佳答案
在同一解决方案中拥有静态库是不够的。您必须将它传递给使用它的项目的链接器。
在 Visual Studio 中,最好的方法是添加“项目引用”。这会设置依赖关系,以便项目以正确的顺序构建,并选择与使用项目匹配的静态库版本,即 Debug 与 Release、x86 与 x64 等。
关于c++ - 我无法让我自己的静态库在我的项目中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917766/