我们有很多Delphi项目,当我之前构建它们时,我没有看到任何错误。但是最近我在构建其中一个项目时看到了以下错误。
D:\ Delphi Projects \ MySetting.pas致命:无法编译使用过的单位' mscorlib_TLB.pas'
起初我认为一些后台进程正在使用这个mscorlib_TLB.pas,然后我重新启动我的计算机并再次构建它,它仍然失败并在上面给出了同样的错误。这个mscorlib_TLB.pas错误是什么?
谢谢!
答案 0 :(得分:6)
您已在托管(.net)对象周围导入了COM可调用包装器(CCW)的COM对象。导入的类型_TLB.pas
文件(有时会不必要地)在其mscorlib_TLB
子句中引用uses
。
Delphi的类型库导入程序有问题,自动生成的TLB pas文件中存在语法错误。
尝试在使用它的任何单位中删除对mscorlib_TLB
的引用。
如果该单元实际上取决于mscorelib
中的某些内容,那么您必须手动修复400kB pas文件中的语法错误。
答案 1 :(得分:0)
如果您确实需要使用该库,可以使用 Component :: Import Component 工具导入它。
答案 2 :(得分:0)
我发现mscorlib_TLB
和我几年前在C#中构建的COM包装器一起MyComWrapper
。当我将MyComWrapper_TLB
复制到另一个工作站时,还需要复制mscorlib_TLB
,因为它包含MyComWrapper_TLB
所需的类型定义。
如果无法找到相关tlb的重新导入,则应重新生成mscorlib_TLB.pas
。看来我在2017年10月4日重新导入了tlb。
这是描述单位的序幕:
unit mscorlib_TLB;
// ************************************************************************ //
// WARNING
// -------
// The types declared in this file were generated from data read from a
// Type Library. If this type library is explicitly or indirectly (via
// another type library referring to this type library) re-imported, or the
// 'Refresh' command of the Type Library Editor activated while editing the
// Type Library, the contents of this file will be regenerated and all
// manual modifications will be lost.
// ************************************************************************ //
// $Rev: 52393 $
// File generated on 10/4/2017 11:15:21 PM from Type Library described below.
// ************************************************************************ //
// Type Lib: C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb (2)
// LIBID: {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}
// LCID: 0
// Helpfile:
// HelpString: mscorlib.dll
// DepndLst:
// (1) v2.0 stdole, (C:\Windows\SysWow64\stdole2.tlb)
// Parent TypeLibrary:
// (0) v1.0 MyComWrapper, (C:\source\my-client\client-project\MyComWrapper\bin\x86\Release\MyComWrapper.tlb)