为啥从命令行编译而不是从 IDE 编译时会出现歧义错误?

Posted

技术标签:

【中文标题】为啥从命令行编译而不是从 IDE 编译时会出现歧义错误?【英文标题】:Why do I get an amibguity error when I compile from the command line, but not from the IDE?为什么从命令行编译而不是从 IDE 编译时会出现歧义错误? 【发布时间】:2009-02-24 21:55:13 【问题描述】:

我正在尝试使用 Borland C++ Builder 5.5 编译一个相当大的项目。该项目在 IDE 中编译,但速度太慢。但是,当我使用命令行进行编译时,会出现 IDE 中不存在的歧义错误:

错误 E2015 Project.h 536:“TTreeNode”和“Comctrls::TTreeNode”之间的歧义

我的命令行参数如下:

d:\PROGRA~1\Borland\CBUILD~1\bin..\BIN\bcc32 -Od -Vx -Ve -X- -r- -a8 -5 -b- -d -k -vi -c -tW -tWM -w-par -I[非常大的包含文件列表] -nQ:\output [非常大的要编译的文件列表]

该命令由make.exe生成。

【问题讨论】:

最后一个 -I 似乎指定了一个包含目录,但该目录本身丢失了(或文件的真正大列表的一部分)。 \bin..\ 也似乎有点奇怪。你确定你的命令行正确吗? 我已经修复了描述中的命令行。 \bin..\ 确实看起来很奇怪,但我确信这不是问题,因为找到的工具没有问题并且似乎没有引用错误。 【参考方案1】:

我认为问题在于命令行编译器和 IDE 编译器不同。命令行似乎对歧义更加严格,而 IDE 仅将其标记为警告。鉴于此,我猜有些项目即使在 IDE 中构建,也根本无法使用命令行工具构建。

【讨论】:

尽管它们不同,但 C++ 规则是相同的。我预计问题更可能是传递给编译器的选项不同。我相信 BCB5 有“显示命令行”选项(工具-> 环境选项菜单)应该会有所帮助。 (有可能直到以后的版本才引入)

以上是关于为啥从命令行编译而不是从 IDE 编译时会出现歧义错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何用命令行编译c++程序

为啥在使用 OpenGL 编译顶点着色器时会出现着色器编译器错误 #143、#160 和 #216?

为啥在尝试定义函数体时会出现此编译器错误?

为啥在尝试调用采用动态参数的基本构造函数/方法时会出现此编译错误?

为啥出现Exception in thread "main"

SOPC 中NIOSII IDE编译工程时错误!!