在发布版本中使用英特尔 c++ 编译时出现“cin >> a >> b”编译错误

Posted

技术标签:

【中文标题】在发布版本中使用英特尔 c++ 编译时出现“cin >> a >> b”编译错误【英文标题】:Compile error with "cin >> a >> b" with intel c++ compile in release version 【发布时间】:2015-10-28 11:04:40 【问题描述】:

当我使用带有 VS2015 的 intel C++ 编译器编译发布版本时,它会失败。但是当我编译一个调试版本时,它就可以工作了。我无法理解发生了什么。它的配置有什么问题吗?错误列表如下。我该怎么办?

--编辑--

今天比较了debug版本和release版本在各个选项中的配置,我终于发现如果我将interprocedural optimization设置为no或者single-file(/Qip),就可以了。但是如果我将程序间优化设置为多文件(/Qipo),它就不起作用了。另外,我在intel C++编译器的包含路径中找不到iostream,该项目似乎使用VC++中的库,是我无法编译的原因吗?我怎么解决这个问题?非常感谢。

警告 #11021 未解决 __imp_?_Src@?3??_Getffld@?$num_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABAHPADAAV?$istreambuf_iterator@DU ?$char_traits@D@std@@@3@1AAVIos_base@3@PAH@Z@4QBDB 测试1

错误 #11023 并非所有链接所需的组件都出现在命令行测试 1 中

#include<iostream>
using namespace std;

int main()

    int a, b;
    while (cin >> a >> b)
    cout << a << ' ' << b;
    return 0;

【问题讨论】:

如果您删除此行,您确定它会编译发布版本吗?也许,问题不在cin &gt;&gt; a &gt;&gt; b 行。 “当我编译调试版本时” 关于您的环境和构建参数的信息非常不足。 我确信当我删除这一行时它会编译一个发布版本。并且我使用VS2015中的默认配置作为调试版本和发布版本。 尝试创建一个新的空项目并复制到您的源文件中。 听起来好像链接器找不到正确版本的库? 【参考方案1】:

在我在英特尔开发者专区询问之后。他们告诉我这个问题只能在 /MD 和 /Qipo 一起使用时重现,所以我可以使用 /MT 来解决它。当我使用 /MT 时,它可以工作。

【讨论】:

以上是关于在发布版本中使用英特尔 c++ 编译时出现“cin >> a >> b”编译错误的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 reduce() 和 std::execution 时出现编译错误

使用带有 Clang 的 Boost 编译 c++ 项目时出现问题

英特尔 C++ 编译器:最高 GCC 版本兼容性是多少?

为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?

C++VS2010编译器问题,在程序正确时出现如下,连cout,cin都用不了

错误:在 Linux 上使用 OpenGL 编译 C++ 程序时出现“GL/glfw3.h:没有这样的文件或目录”