【问题标题】:"error LNK2019: unresolved external symbol" error in Visual Studio 2010Visual Studio 2010 中的“错误 LNK2019:无法解析的外部符号”错误
【发布时间】:2014-06-10 04:20:43
【问题描述】:

我正在尝试编译和运行使用 libsndfile 库进行声音文件处理的 C 代码。

我已经使用这个路径添加了头文件: project's Properties (in C/C++ -> General -> Additional Include Directories)

我还使用此路径链接了库: Project Properties -> Linker -> Input -> Additional Dependencies.

但在调试时,我收到以下错误:

1>sil.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification 1>sil.obj : error LNK2019: unresolved external symbol _sf_write_sync referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_write_double referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_close referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_read_double referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_open referenced in function _main 1>c:\users\anam\documents\visual studio 2010\Projects\silence\Debug\silence.exe : fatal error LNK1120: 5 unresolved externals

有人可以在这里找出问题吗?我刚开始使用 Visual Studio,我真的需要帮助!

【问题讨论】:

  • 由于某种原因,您的链接无法正常工作。我建议您使用以下命令检查您尝试链接到的 .lib 文件中包含的符号:dumpbin.exe -headers libsndfile.lib。在“Visual Studio 命令提示符”中发出该命令并查看生成的输出。检查以确保您尝试链接的确切符号包含在其中(包括前导下划线)。
  • 你转过this了吗?

标签: c visual-studio-2010 lnk2019 libsndfile


【解决方案1】:

我遇到了同样的问题。我解决了如下。

1)请确保您下载的是 32 位 libsndfile(libsndfile-1.0.25-w32-setup.exe) 包,因为 Visual Studio 编译器是 32 位的。

2)点击libsndfile的setup.exe(libsndfile-1.0.25-w32-setup.exe)文件安装库。

3)创建项目后,执行以下2个步骤:

i)转到 Debug >> Project Properties >> Configuration Properties >> C/C++ >> General >> Additional Include Directories >> 点击右边的箭头然后点击edit >> Here, add libsndfile 目录中包含文件夹的路径。

ii)步骤(i)完成后,点击配置属性中的链接器>>常规>>附加库目录>>点击右侧的箭头,然后点击编辑>>这里,添加路径.lib 文件。您可能必须输入整个路径,因为浏览选项不显示 .lib 文件。所以,就我而言,我输入了 C:\Program Files (x86)\Mega-Nerd\libsndfile\lib\libsndfile-1.lib。

终于,你完成了!您的代码现在应该可以编译并运行而不会引发任何错误。

【讨论】:

  • “Visual Studio 编译器是 32 位的”。这实际上是不正确的。 Visual Studio 编译器根据您提供给它的设置生成 32 位或 64 位代码。编译器可执行文件本身(cl.exe)是 32 位还是 64 位完全无关。
【解决方案2】:

缺少指定库的文件夹目录(.lib 添加到 Additional Dependencies) VC++ 目录视图
单击库目录,单击右侧的下拉按钮并选择
并指定它应该工作的目录。

【讨论】:

    【解决方案3】:

    我有一个类似的问题,问题是混合 x64 库和 win32 项目。

    【讨论】:

      猜你喜欢
      • 2013-06-15
      • 1970-01-01
      • 2023-03-28
      • 2014-10-09
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多