【发布时间】:2014-04-17 20:47:42
【问题描述】:
我从一位已不在公司的同事那里继承了一个旧程序。这是我们使用的 CPLEX 优化。它是使用 Visual Studio 2005 和 CPLEX121 在 C++ 内部构建的。它所在的服务器正在退役,我们正在尝试将其迁移到新服务器。我正在尝试使用 CPLEX126 在 Visual Studio 2013 中重建新应用程序以进行优化。
我得到的错误是:
说明:
错误 LNK2038:检测到“_MSC_VER”不匹配:值“1600”与(项目名称).obj 中的值“1800”不匹配
文件:
ilocplex.lib(ilocplex.obj)
这样的不匹配有很多。我是 Visual Studio 和 C++ 的新手,但我设法通过更新 CPLEX 链接来工作,现在这个错误正在发生。
我已经能够推断出我可以对工具集做一些事情或“重新编译我的库”这似乎对上一篇文章中的某些人有用,但我需要更具体的帮助来了解如何做那。
不,是目标文件。编译器发出什么。它们似乎在 .lib 文件中。你需要重新编译它。 – 大卫赫弗南 2013 年 10 月 24 日 20:40
嗨,大卫,我是 C++ 新手。我基本上是一名 C# 程序员。能否请您详细说明 cmets – user1654136 2013-10-24 20:43:37 2
编译器告诉你用 VS2012 重新编译 Projectname1.lib。 ——大卫·赫弗南 2013 年 10 月 24 日 20:48
我不知道这意味着什么,我也没有足够的声誉来发表评论。
还有,
对于您解决方案中的每个项目,请确保 属性 > 配置。属性 > 常规 > 平台工具集 是所有这些,v100 用于 Visual Studio 2010,V110 用于 Visual Studio 2012 您也可能正在使用 Visual Studio 2012 的 v100
回复是“这对我有用”
我的项目的平台工具集是“Visual Studio 2013 (v120)”。我需要添加一些其他工具集吗?下拉列表中没有其他选项。
.cpp文件中还有一段代码:
// set up Visual Studio version
#define _VS2005_
# if _MSC_VER < 1400
# undef _VS2005_
# endif
我也不知道这是在做什么,看看它是否导致了错误。
【问题讨论】:
-
确保解决方案中每个项目的平台工具集设置为v120,然后重建所有内容。如果这不能解决错误,则问题可能是您正在链接到使用 VS2005 编译的库(可能是 ilocplex.lib?我无法从错误消息中确定)。您需要使用 VS2013 重新编译有问题的库。
-
如何重新编译库?我是 VS 新手
-
下载源代码,打开项目解决方案,全部构建。
-
希望有一个与该库关联的项目文件 (.vcproj)。在这种情况下,在 VS2013 中打开项目文件,更改平台工具集(如果升级过程由于某种原因没有这样做)并重建项目。如果没有项目文件,最好的办法是创建一个新项目,将涉及的源文件添加到该项目并编译。 MSDN 应该有关于如何去做这一切的文章。
-
我在构建时得到了错误。
标签: c++ visual-studio visual-studio-2013 visual-studio-2005 cplex