我有一个由三个项目组成的 Delphi 项目组:
Sales
、Inventory
和 Orders
。
在销售项目中,有一个名为
Customers.pas
的单元。 Inventory
项目有一个名为 Products.pas
的单元,它从 Customers
项目导入 Sales
。 Orders
项目在Sales
文件的Inventory
子句中同时列出了requires
和Orders.dpk
,Customers
也被导入到OrdersUnit
.
但是,当我尝试编译项目时,出现以下错误:
[dcc32 错误] Orders.dpk(42): E2199 包“销售”和“库存”都包含单位“客户”
什么可能导致此错误,可能的解决方案是什么?我无法移动、删除或重命名代码库中的任何文件。
从错误中可以清楚地看出,销售和库存包都链接到它们自己的
Customers
单元副本中,尽管您声称“库存项目......从销售项目导入客户”。
因此,当 Orders 项目链接到两个包中时,它最终会得到 2 个单独的
Customers
单元副本,这是不允许的。
Customers
单元只能在single 包中实现。任何其他想要使用它的项目都必须从该包中导入它。
您的 Inventory 项目显然没有正确导入
Customers
单位。例如,如果从 Sales 项目编译的 Customers.dcu
在 Inventory 项目的搜索路径上可见,则编译器将使用该 DCU 而不是从 Sales 包中导入该单元。确保情况并非如此。