我正在尝试扩展我的约束编程知识,我想使用谷歌的 or-tools 构建一个简单的示例在 VS2015 中。
但是,我经常被这些链接器错误困扰。 LNK2019 和 LNK2001。为什么 VS 中的链接如此困难。
谷歌的 or-tools位于一个完美的文件夹中,包含一个 include 子文件夹和一个 lib 子文件夹以及一个 .lib 文件。
我添加了额外的库依赖。
Configuration Properties -> Linker -> General Additional Library Dependencies : C:\PATH\or-tools.VisualStudio2013-64b\lib
在链接器属性部分下设置输入。
Configuration Properties -> Linker -> Input Additional Dependencies : ortools.lib
Include 目录所在的 VC++。
Configuration Properties -> VC++ Directories : C:\PATH\or-tools.VisualStudio2013-64b
但是在构建解决方案时它仍然会抛出链接错误。我在这里错过了什么。
提前致谢。
编辑:
拼写
最佳答案
由于VS2013和VS2015编译器版本不兼容,你必须build the lib from source .但请注意,在与 VS2015 链接时,这可能需要做更多的工作。具体来说,我不得不手动解决以下问题:
- 将
protobuf-3.0.0-beta-1
更改为protobuf-3.0.0-beta-2
(奖金。不是真的有必要) - gflags 2.1.2 由于
snprintf
周围的名称冲突而无法编译。要解决此问题,请从 GitHub 下载最新的 gflags 版本并覆盖%OR_TOOLS%\dependencies
中的版本
- 在
dependencies\sources\cbc-2.9.7
中查找所有 VS 解决方案文件 (.sln),只需双击它们并按照说明操作即可将其转换为 VS2015 格式。 - 将以下代码添加到
makefiles\Makefile.port
ifeq ("$(VisualStudioVersion)", "14.0")
Visual Studio =2015
VS_RELEASE=v140
VS_COMTOOLS=140
别的
...
结束
- 将
Visual Studio 12 2013
替换为Visual Studio 14 2015
在每一步之后重新运行 make third_party
。
或者你可以只download最终结果,链接到 Windows 10 x64 VS2015 更新 1。我在运行 make third_party && make cc
后包含了整个文件夹。
关于c++ - 链接器问题 VS2015。 LNK2019 和 LNK2001 未解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947002/