【问题标题】:unresolved external symbol compile error未解决的外部符号编译错误
【发布时间】:2012-04-21 05:25:11
【问题描述】:

我在尝试新库时经常遇到这个问题。这次我使用 PointGrey Camera 并尝试使用它的 API 库(一些 dll、lib、头文件)。大多数情况下,通过配置 SDK(我使用的是 VS2008)工具/选项/VC++ 目录/包含文件(/库文件)(/可执行文件)来解决问题,
我还尝试了项目配置: + 项目属性/链接器/输入/附加依赖项 + 项目属性/链接器/常规/附加库目录

这一次,尽管如此,我仍然有错误。

有解决这个问题的通用方法吗?

我需要从 VS2008 了解这个诊断吗?

Error   1   error LNK2019: unresolved external symbol __imp__flycaptureGetPacketInfo referenced in function "enum FlyCaptureError __cdecl initializeStandardEventSizes(void *,struct FlyCaptureImageEvent * const)" (?initializeStandardEventSizes@@YA?AW4FlyCaptureError@@PAXQAUFlyCaptureImageEvent@@@Z)  main_2.obj  test

使用 Dependencies Walker 等分析工具能否确保很好地解决这些问题?

【问题讨论】:

  • 请澄清一下:您是否将所有必需的库文件添加到项目设置中(例如链接->对象/库模块;不知道在 VS2008 中它是如何完成的)或者您只是添加了库 目录到配置?
  • 我尝试了两种方法:在配置设置中添加了 API 库有 2 个库文件 *.lib(也添加了目录);其次,我将 API 的所有静态库和 DLL 复制到工作文件夹。两者都没有成功

标签: c++ compiler-warnings


【解决方案1】:

此消息表明您在代码中使用了符号(函数或变量)。该符号可能在某处声明(很可能在代码中包含的头文件中),否则会出现编译错误。当链接器搜索符号时(在您的目标文件和您指示它查找的 lib 文件中)它找不到它。

这通常是因为您忘记让链接器知道您希望它在其中搜索的库。

大多数库都附带一组指令,旨在帮助您正确设置所有内容并避免遇到这些问题。

【讨论】:

  • 正如我在问题中明确表示的那样,我已经完成了我通常对其他 API 库所做的事情。例如,OpenCV 库,但它仍然不起作用。我现在正在使用 Point Gray 相机 API,并且没有很多库,2 个 *.lib 和一个 *.dll 文件夹。出了什么问题?以及如何解决它
  • @SonLe 你通常做的事情对你来说可能看起来很正常,但我不知道你做了什么,也不知道这样做是否有意义。您现在使用的特定库(而不是您过去使用的任何其他库)可能带有如何使用它的说明。
  • 如果您愿意,请阅读我原来的问题。我在那里写了所有的东西。我在上一条评论中也强调了这一点
  • @SonLe 所以你没有遵循图书馆的说明,你只是决定做点别的。它很可能不会起作用。
  • 这个问题最近已经解决了。我安装了PointGrey不兼容的库。这就是为什么它不起作用。但这说明了“不兼容的库”和“未解决的执行符号错误”之间的关系
【解决方案2】:

这个问题最近已经解决了。我安装了PointGrey不兼容的库。这就是为什么它不起作用。但这说明了“库不兼容”和“未解决的执行符号错误”之间的关系

【讨论】:

  • 此外,有时很难选择正确的 API 库进行安装。我使用 Win7 x64,但 PointGrey x64 的安装始终无法正常工作。现在,它与 PointGrey SDK x86 配合得非常流畅。不仅如此,我还必须安装最新的 SDK v2.3。其他的不工作。然而,根据 PointGrey 网站上的安装说明,它们中的任何一个都可以在 win7 和 VS2008 上正常工作。 Sooo....令人困惑和麻烦!
猜你喜欢
  • 1970-01-01
  • 2016-05-29
  • 2019-10-30
  • 2011-09-03
  • 2010-11-20
  • 2011-10-21
  • 2012-10-21
  • 2014-05-12
相关资源
最近更新 更多