我正在维护一个 VS2010 项目,其中包含许多交叉引用的 COM 库。我正在尝试以可以从安装了 VS2010 的随机工作站构建的方式配置项目。工作站可以是 32 位和 64 位的,所以如果我将项目配置为“注册输出”,则构建将无法在 32 位机器上构建,因为无法加载 64 位 DLL 来调用 DllRegisterServer。
这是一个示例:项目 B 中的 Typelib 引用了项目 A 中的 typelib。项目 C 将通过以下语句引用项目 B:
#import "B.tlb"
由于库 B 引用 A,当 B.tlb 被导入时,编译器会尝试从 A 加载类型。因此,如果 A 未注册,编译将失败并显示:
error C4772: #import referenced a type from a missing type library ...
我尝试使用 OleView 应用程序打开 B.tlb,如果使用 regsvr32 注册,它肯定只显示库 A 引用的正确文件名。
所以,我的问题是:是否有任何替代方法可以让库引用正确解析,而无需注册 TLB,只需将所有文件以某种方式放在同一目录中,或附加某种清单?例如,将库的 TLB 重命名为 .tlb 或类似的名称。