- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从一位已离职的同事那里继承了一个旧程序。这是我们使用的 CPLEX 优化。它是使用 Visual Studio 2005 和 CPLEX121 在 C++ 内部构建的。它所在的服务器正在退役,我们正在尝试将其迁移到新服务器。我正在尝试使用 CPLEX126 在 Visual Studio 2013 中重建新应用程序以进行优化。
我得到的错误是:
Description:
error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1800' in (project name).obj
文件:
ilocplex.lib(ilocplex.obj)
这些不匹配的情况有很多。我是 Visual Studio 和 C++ 的新手,但我已经设法通过更新 CPLEX 链接来工作,现在这个错误正在发生。
我已经能够推断出我可以对工具集做一些事情或“重新编译我的库”这似乎对上一篇文章中的某些人有用,但我需要更具体的帮助来了解具体如何做那。
No, it's the object files. What the compiler emits. They appear to be inside the .lib file. You'll need to recompile it. – David Heffernan Oct 24 '13 at 20:40
Hi David, iam new to c++ .Iam basically a c# programmmer. Can you please elaborate the comments – user1654136 Oct 24 '13 at 20:43 2
The compiler is telling you to recompile Projectname1.lib with VS2012. – David Heffernan Oct 24 '13 at 20:48
我不知道那是什么意思,而且我没有足够的声誉来发表评论。
此外,
for each project in your solution make sure that Properties > Config. Properties > General > Platform Toolset is one for all of them, v100 for visual studio 2010, v110 for visual studio 2012 you also may be working on v100 from visual studio 2012
响应是“这对我有用”
我项目的平台工具集是“Visual Studio 2013 (v120)”。我需要添加一些其他工具集吗?下拉列表中没有其他选项。
.cpp文件中还有一段代码:
// set up Visual Studio version
#define _VS2005_
# if _MSC_VER < 1400
# undef _VS2005_
# endif
我也不知道这是在做什么,看看它是否导致错误。
最佳答案
首先 - 您将不能重新编译 CPLEX 库,因为您将没有源代码,并且除非您在 IBM 的研发团队工作,否则您将无法获得它.所以忘记那条推理线。您依赖于 IBM 提供的预构建库,该库适用于您正在使用的编译器版本。
当您说您“设法通过更新 CPLEX 链接来工作,但现在发生此错误”时,我猜您设法更新了编译器使用的 C++ 包含文件的路径,所以您的编译错误已经消失。但是您可能还没有更新库路径来向编译器显示要链接的正确库集。
根据您发布的错误,“_MSC_VER”:值“1600”与值“1800”不匹配,这对我说您正在尝试链接为 VS2010 构建的 CPLEX 库,而您的代码已编译使用VS2013。参见示例 How to Detect if I'm Compiling Code With Visual Studio 2008?
如果您是 C++ 的新手,任何人都希望您走进一个庞大的现有代码库并尝试移植到新的编译器和库并让它立即运行而无需做更多的研究,这简直是疯了背景学习。您是否尝试构建和运行 CPLEX 提供的 C++ 示例?
您是否阅读过使用 CPLEX 设置 C++ 项目的说明?它们位于 CPLEX 文件夹中的文件 c_cpp.html 中。
现在,我不知道 CPLEX 有适用于 VS2013 的库。我这里没有 12.6,所以我不能确定。查看已安装的 CPLEX 拷贝,可能类似于:
C:\Program Files\IBM\ILOG\CPLEX_Studio126\cplex\lib
...这应该会告诉您支持哪些版本的 VS。我有 x64_windows_vs2008、x64_windows_vs2010 和 x64_windows_vs2012
如果没有适用于 VS2013 的库拷贝,那么我认为您将不得不返回到 VS2012 或 VS2010。 可能有一种方法可以配置 VS2013 使其像 VS2012 一样工作,并欺骗它生成兼容的代码;但我猜测从 IBM 的角度来看,这不是“受支持的配置”。
关于#define VS2005 的内容是使用 C++ 预处理器定义一个符号,该符号可用于打开或关闭源代码的位。查找源代码中使用该符号的位置。我猜这与您的链接问题完全不同。如果您对代码进行更改以使其与较新版本的编译器和库一起工作(或更好地工作),您可能会选择执行类似的操作。
关于c++ - 需要更多关于为 '_MSC_VER' 检测到的 LNK2038 不匹配的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23143152/
我正在针对使用 Visual Studio 2010 编译的 Ruby 库编写一个 Ruby C 扩展。(我无法更改它,也无法重新编译我正在构建的 Ruby 核心,因为它嵌入在第三方应用程序中。) 我
我在 VS2013 的 winnt.h 文件中发现了这段奇怪的代码。 #ifdef STRICT typedef void *HANDLE; #if 0 && (_MSC_VER > 1000) /
我有一个导入到 VS 2015 中的 VS 2010 C++/CLI 项目。因为它链接到我无法控制的一些 VS 2010 C++ 库,所以我需要使用 VS 2010 编译器对其进行编译。当我将项目导入
我从一位已离职的同事那里继承了一个旧程序。这是我们使用的 CPLEX 优化。它是使用 Visual Studio 2005 和 CPLEX121 在 C++ 内部构建的。它所在的服务器正在退役,我们正
尝试在 Windows 7 上的 VS2010 中设置 Directx11 时出现以下错误。这是什么原因造成的?我已经设置了所有目录和链接器文件,但我一直遇到这个问题。 谢谢。 1>------ Bu
我目前正在努力删除 CMake 作为库的依赖项,因为它似乎可以将大部分生成的代码设为静态。执行一些环境检查以查看我们使用的是哪种操作系统和编译器。 CMake 中的其中一项检查如下所示: if (MS
我在 VS2017 中编译项目时遇到以下问题: 1>libPolyFill.lib(libPolyFill.obj):错误 LNK2038:检测到“_MSC_VER”不匹配:值“1800”与 clie
我是 C++ 和 Boost 的新手。我正在做一个简单的小程序来尝试学习 Boost Filesystem 库。我已经按照说明构建了 Boost 库。现在,当我尝试编译这个简单的代码时,我遇到了其中的
我开始玩 OGRE 并下载了它。我使用 MS Visual Studio 2013 Express。我看到没有 VS2013 的 SDK,所以我下载了 VS2012 的。然后我下载了 Tutorial
我正在将我的项目从 VS2010 转换到 VS2012。但是我在某些项目中遇到了 _MSC_VER 链接器错误。经过长时间的谷歌搜索后,我发现问题是由于将 VS2010 中创建的库链接到 VS2012
我正在将我的项目从 VS2010 转换为 VS2012。但在某些项目中出现 _MSC_VER 链接器错误。通过谷歌浏览了很长时间后,我发现问题是由于在 VS2010 中创建的库链接到 VS2012。
我尝试在 Visual Studio 2012 中使用 Qt5.0.1 编译一个简单的 GUI 应用程序,但出现以下错误: qtmaind.lib(qtmain_win.obj) : error LN
我收到了一个新开发的 SDK 的示例应用程序,但我无法编译它 - 由于 ATL 的原因,它根本无法在 Visual Studio Express 中编译,而且这似乎是Microsoft 仍然提供的 V
我是一名优秀的程序员,十分优秀!