使用 Visual Studio 2010/Intel 2013 创建的 C++/Fortran 项目不会在 Visual Studio 2015/Intel 2017 中以 Release模式构建

标签 c++ visual-studio-2015 linker-errors intel-fortran

我继承了一个为在 Visual Studio 2010/Intel 2013 上运行而创建的 Visual Studio 项目,它是 C++ 和 Fortran 项目的组合。我的任务是进行必要的修改,以使项目能够使用 Visual Studio 2015 和 Intel Fortran 2017 构建和运行。我已经在 Debug模式下编译、构建和运行了所有内容,但我无法在发布时构建它模式。对于所有引用 C++ .lib 项目的 Fortran 项目,我收到以下消息:

MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance   
fatal error C1905: Front end and back end not compatible (must target same processor).
LINK : fatal error LNK1257: code generation failed

我检查并仔细检查了配置,所有项目都是为 Win32 平台构建的。

在网上搜索了一下,我了解到可能是因为不同项目的优化设置不同。我玩过优化设置,这些设置要么什么都不做,要么导致库冲突。我在网上搜索以尝试解决这些冲突,但似乎找不到足够直接的解决方案供我实现。

该项目仍以调试和 Release模式在 Visual Studio 2010 中构建和运行。我什至尝试使用从 Visual Studio 2010 创建的 .lib 构建新的 Fortran 版本并得到相同的错误。

不兼容的新版本 Visual Studio 和 Intel Fortran 是否存在本质上的差异?

最佳答案

错误 C1905 指出:

“前端和后端不兼容(必须针对相同的处理器)”

这是什么意思,为什么会这样? “当 .obj 文件由针对一个处理器(例如 x86、ARM 或 x64)的编译器前端 (C1.dll) 生成,但正在由针对一个处理器的后端 (C2.dll) 读取时,会发生此错误一个不同的处理器。”

“要解决此问题,请确保您使用的是匹配的前端和后端。这是在 Visual Studio 中创建的项目的默认设置。如果您编辑了项目文件并使用不同的路径指向编译器工具。如果您没有专门设置编译器工具的路径,那么如果您的 Visual Studio 安装已损坏,则可能会出现此错误。例如,您可能已将编译器 .dll 文件从一个位置复制到另一个位置。使用程序和Windows 控制面板中用于修复或重新安装 Visual Studio 的功能。”

您声明您正在尝试将您的项目从 2013 年移植到 2017 年,这对于为什么您无法在 Release模式下构建和运行它是有道理的,因为编译器工具很可能位于不同的位置.

-MSDN

关于使用 Visual Studio 2010/Intel 2013 创建的 C++/Fortran 项目不会在 Visual Studio 2015/Intel 2017 中以 Release模式构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44761673/

相关文章:

qt - 安装Qt 5.6.1 MSVC 2015 Update 3

c++ - Visual Studio 2015 : C++ code analysis error C1253, 无法加载模型文件 'res://mspft140.dll/300'

c++ - 如何指定要链接到哪个版本的 boost 库?

c++ - 无法使信号和插槽在 Qt 中工作

c++ - OPERATOR_BRACKET_IS_NOT_SUPPORTED 在 boost::bimap 上

c++ - 科学计数法 C++ 中的字符串到双重转换

visual-studio-2015 - 为什么我看不到Visual Studio 2015预览版的新项目Web模板?

c++ - gcc 4.8链接器链接boost线程库时出错

ios - ios 中体系结构 x86_64 的 undefined symbol

c++ - 将正在运行的线程中的函数移动到新线程?