链接器问题VS2015。 LNK2019和LNK2001未解析的外部符号

时间:2016-01-22 12:41:34

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

我正在尝试扩展我对约束编程的了解,我想在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

包含目录的Infomed VC ++。

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

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

提前致谢。

修改

拼写

1 个答案:

答案 0 :(得分:2)

由于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. 中的版本
  4. dependencies\sources\cbc-2.9.7中查找所有VS解决方案文件(.sln)并转换为VS2015格式,只需双击它们并按照说明操作即可。
  5. 将以下代码添加到makefiles\Makefile.port
  6. ifeq ("$(VisualStudioVersion)", "14.0") VISUAL_STUDIO=2015 VS_RELEASE=v140 VS_COMTOOLS=140 else ... endif

    1. Visual Studio 12 2013替换为Visual Studio 14 2015
    2. 每一步后重新运行make third_party

      或者您只能download在Windows 10 x64 VS2015更新1上链接的最终结果。运行make third_party && make cc后,我已将整个文件夹包含在内。