【问题标题】:Linker Issues VS2015. LNK2019 and LNK2001 unresolved external symbol链接器问题 VS2015。 LNK2019 和 LNK2001 未解析的外部符号
【发布时间】:2016-01-22 12:41:34
【问题描述】:

我正在尝试扩展我在约束编程方面的知识,我想在 VS2015 中使用 google 的 or-tools 构建一个简单的示例。

但是,我经常被那些链接器错误所困扰。 LNK2019 和 LNK2001。为什么 VS 中的链接这么难。

Google 的 or-tools 位于一个完美的文件夹中,包含一个包含子文件夹和一个包含一个 .lib 文件的 lib 子文件夹。

我添加了其他库依赖项。

Configuration Properties -> Linker -> General Additional Library Dependencies : C:\PATH\or-tools.VisualStudio2013-64b\lib

在链接器属性部分下设置输入。

Configuration Properties -> Linker -> Input Additional Dependencies : ortools.lib

Informed VC++ 包含目录在哪里。

Configuration Properties -> VC++ Directories : C:\PATH\or-tools.VisualStudio2013-64b

但是在构建解决方案时它仍然会引发链接错误。我在这里错过了什么。

提前致谢。

编辑:

拼写

【问题讨论】:

  • 您是否尝试将 Visual Studio 2013 二进制文件与 Visual Studio 2015 一起使用?
  • 嗯是的,但是在VS2013下也不起作用。我觉得我在添加静态库的过程中缺少一步。如果我正在尝试任何其他 .lib,那么 #pragma comment(lib, "mylib") 也不够。
  • 如果您在此处或至少通过链接提供这些链接错误消息,回答您的问题可能会更容易。
  • 等一下,我正在尝试将旧二进制文件链接到新版本... fml
  • 在“库目录”而不是“包含目录”中搜索库。

标签: c++ visual-studio linker visual-studio-2015 constraint-programming


【解决方案1】:

由于VS2013和VS2015编译器版本不兼容,你必须build the lib from source。但请注意,在与 VS2015 链接时,这可能需要做更多的工作。具体来说,我必须手动解决以下问题:

  1. protobuf-3.0.0-beta-1 更改为protobuf-3.0.0-beta-2(奖励。不是真的必要)
  2. gflags 2.1.2 由于snprintf 周围的名称冲突而无法编译。要解决此问题,请从 GitHub 下载最新的 gflags 版本并覆盖 %OR_TOOLS%\dependencies 中的那个
  3. dependencies\sources\cbc-2.9.7 中查找所有 VS 解决方案文件 (.sln),只需双击它们并按照说明操作即可转换为 VS2015 格式。
  4. 将以下代码添加到makefiles\Makefile.port

ifeq ("$(VisualStudioVersion)", "14.0") VISUAL_STUDIO=2015 VS_RELEASE=v140 VS_COMTOOLS=140 else ... endif

  1. Visual Studio 12 2013 替换为Visual Studio 14 2015

在每一步之后重新运行make third_party

或者您也可以只download 最终结果,链接到 Windows 10 x64 VS2015 更新 1。我在运行 make third_party && make cc 后包含了整个文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2013-06-01
    相关资源
    最近更新 更多