c++ - 我无法让我自己的静态库在我的项目中工作

标签 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");

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

最佳答案

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

在 Visual Studio 中,最好的方法是添加“项目引用”。这会设置依赖关系,以便项目以正确的顺序构建,并选择与使用项目匹配的静态库版本,即 Debug 与 Release、x86 与 x64 等。

关于c++ - 我无法让我自己的静态库在我的项目中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917766/

相关文章:

c++ - 如何在 C++ 中使用我的库?

c++ - WxWidgets:麻烦调用 wx Frame Constructor

c++ - 链接错误 __stack_chk_fail(将库与 xcode 一起使用)

swift - 在 xcode 7 swift 项目中更新 pod 后出现链接器问题

c++ - Opencv透明物体检测

c++ - inotify 的替代方法以检测何时在文件夹下创建新文件

c - 在静态库中隐藏结构定义

c++ - 在链接到动态库的静态库中导出符号

c++ - 这个模型需要互斥量吗?

c++ - QWebView:拉伸(stretch)以填满屏幕大小?