在发布版本中使用英特尔 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 >> a >> b
行。
“当我编译调试版本时” 关于您的环境和构建参数的信息非常不足。
我确信当我删除这一行时它会编译一个发布版本。并且我使用VS2015中的默认配置作为调试版本和发布版本。
尝试创建一个新的空项目并复制到您的源文件中。
听起来好像链接器找不到正确版本的库?
【参考方案1】:
在我在英特尔开发者专区询问之后。他们告诉我这个问题只能在 /MD 和 /Qipo 一起使用时重现,所以我可以使用 /MT 来解决它。当我使用 /MT 时,它可以工作。
【讨论】:
以上是关于在发布版本中使用英特尔 c++ 编译时出现“cin >> a >> b”编译错误的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中使用 reduce() 和 std::execution 时出现编译错误
使用带有 Clang 的 Boost 编译 c++ 项目时出现问题
为啥在 Visual Studio 中编译 C++ 项目时出现致命错误“LNK1104:无法打开文件 'cryptlib.lib'?