[英]Delphi XE2 background IDE compiler unable to find source path
我刚买了XE2版本,安装了更新1 ISO,并用我的开源项目编译。
事实上:
TestSQLite3.dpr
回归测试 - 没问题:编译EXE并通过所有测试; 我已经将库的源代码路径添加到项目选项中(对于Win32 / Win64 - 即使它已经在全局IDE级别设置)。 现在,有关未知文件的错误消失了,但源代码中的单元名称仍以红色下划线,并且Ctrl + Click不起作用。
TestSQLite3.dpr
源代码未指定单元的完整路径:
uses
{$I SynDprUses.inc}
Windows,
Messages,
SysUtils,
Classes,
SynCrypto,
SynCrtSock,
SynCommons,
SynDB,
SynOleDB,
SynDBOracle,
(...)
在上面的行中,SynCrypto,SynCrtSock,SynCommons用红色下划线。
我的实际猜测是.dpr中需要完整路径( SynCrypto in '..\\SynCrypto.pas'
)。 我没有测试这个,因为我没有XE2在工作。
由于以前的IDE使用这种源代码(从Delphi 6到XE)没有问题,我想知道是否存在回归的可能性,或者以前版本的IDE没有新的选项(可能基于平台)我没有正确设置。 或者也许在.dpr中需要完整路径 - 但这听起来像Code / Error Insight编译器中的回归给我。
我向鲍勃博士问了这个问题(我买了XE2许可证 - 因为1 $ = 1€方程式听起来有点不公平,我至少想让一个真正的Delphi专家成为我的经销商)。
这是他的答案:
你没有犯错。 问题是XE2中有三个编译器(就像以前版本的Delphi一样):真正的编译器(工作正常),Code Insight编译器(更快),Error Insight编译器(必须更快) )和语法高亮解析器(这是最快的)。
XE2引入了许多使普通编译器变慢的功能,并为Code Insight和Error Insight编译器带来了一些麻烦。 首先,我们有新的目标:Win32,Win64和OSX,它们导致每个目标的搜索路径不同(参见$ PLATFORM指令),以及构建配置,尽管每个目标只有一个“库路径” PLATFORM(而不是构建配置)。
第二个复合因素是引入的虚线单元名称(作用域单元名称)。 Windows不再是Windows,而是Winapi.Windows。
我的猜测是,这两个额外的复杂因素会导致Code Insight和Error Insight编译器出现问题。 请注意,真正的编译器仍然有效。 但Error Insight显示错误错误,Code Insight并不总是适用于这些设备。
您可以尝试再次将它们显式添加到项目中(在这种情况下,将使用完整路径,就像您在堆栈溢出问题中提到的那样)。
所以我担心这会有些回归......
在结束问题时编辑:
第一点是添加完整路径:
SynPdf in '..\SynPdf.pas',
在.dpr确实让文件被找到 - 但后台编译器仍然丢失,无法在本机构中找到类声明。
只是另一个回归样本:
var Thread: array[0..3] of integer;
Handle: array[0..high(Thread)] of integer;
是一个非常安全的语法,编译得很好,由之前的Error Insight编译器解释没有任何问题(自Delphi 5起作用),但在XE2下失败。
我对XE2 IDE有点失望。 编译器使它工作。 但IDE确实令人失望。 从我的角度来看,这是不可用的。 我将继续使用Delphi 7作为我的主编辑器,并使用XE2作为跨平台编译器和调试器。
可能与Barry Kelly在这里提到的内容有关:
http://blog.barrkel.com/2011/10/delphi-xe2-compiler-performance.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.