c++ - LNK2019在visual studio中无法链接静态库

标签 c++ visual-studio linker

看了很多LNK2019的相关问题。但是我仍然对自己的情况感到困惑。如果我遗漏了一些明显的东西,我深表歉意。

我尝试使用 wolfssl 库。它是 C 库。这是我尝试在 VS 2017 中构建的 C++ 代码:

extern "C" {
#include <wolfssl/wolfcrypt/sha3.h>


int main() {
    Sha3  sha3;
    wc_InitSha3_256(&sha3, NULL, 0);

    return 0;
}
}

我得到了 错误LNK2019未解析的外部符号_wc_InitSha3_256

我执行了后续步骤:

  1. 我从源代码重建了 wolfssl。
  2. 我确保 lib 包含 _wc_InitSha3_256
  3. 我在 Properties->Linker->Input->Additional dependencies 中添加了 lib 文件的完整路径(路径中没有空格)
  4. 我用 extern "C"结束了我的代码
  5. 我尝试以管理员权限运行 VS

仍然有同样的错误。有什么想法吗?

更新: 要让 _wc_InitSha3_256() 定义符号 WOLFSSL_SHA3 需要

我的链接配置: My link configuration

最佳答案

@斯蒂芬,

我看到你找到了正确的答案。对于阅读本文的其他人,关于未解析的外部符号 wc_InitSha3_256 的问题的解决方案是将预处理器标志 WOLFSSL_SHA3 添加到您的设置中。这可以在预处理器下的 Visual Studio 项目设置中完成,也可以通过添加 #define WOLFSSL_SHA3 更新 wolfssl-root/IDE/WIN/user_settings.h 中的设置并重建 Visual Studio 项目。有关使用 wolfSSL windows 解决方案的其他文档,请参阅“文档”选项卡下的 wolfSSL 网站,并在“技术文档”部分下查找名为“wolfSSL with Visual Studio”的文档。链接如下:

https://www.wolfssl.com/docs/visual-studio/

对于与 wolfSSL 产品有关的任何 future 问题,如果您将标志“wolfssl”添加到您的问题,我们确实有工程师会定期检查堆栈溢出是否有新问题,并且很乐意发布答案!如果您的问题没有得到解答,您也可以随时通过 support [at] wolfssl [dot] com 直接联系我们。只需向我们发送堆栈溢出问题的链接,我们非常乐意调查!

关于c++ - LNK2019在visual studio中无法链接静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50803878/

相关文章:

c++ - getline() 如何在 while 循环条件中评估为 true 或 false?

c++ - 为什么 Visual C++ 不在特定函数中命中断点或单步执行?

c - 在 gcc/cc 中聚合源文件

c - Mex无法正确链接,导致 "dyld: lazy symbol binding failed: Symbol not found: _mxGetNumberOfDimensions_700"

c++ - 完美转发的身份功能

c++ - 跨线程从 QML 调用 QObject 函数

c++ - 为什么不允许使用赋值语法进行 auto_ptr 初始化

visual-studio - 如何导航回 Visual Studio 中的最后一个光标位置?

c++ - 无法在 Visual Studio 2015 中将 typedef 转换为 std::pair

memory - 非连续内存区域的 gnu 链接器部分