![](/img/trans.png)
[英]Registration Free COM Interop Initialization - parameterless constructor
[英]Registration free COM interop. assembly B reference assembly A?
#import指令在C ++中用于导入类型库。 “ no_registry ”属性告诉编译器不要在注册表中搜索类型库。
例如:
#import "XXX.tlb" no_namespace named_guids no_registry
问题:我想在delphi中做同样的事情:我知道使用了TLIBIMP ,但是我找不到像no_registry
这样的属性。
例如:
TLIBIMP "XXX.tlb" ????
这是怎么做的,甚至有可能吗?
更新:
我有一个并排的并排组件。 一个COM
引用一个组件(B) COM
组件(A)。 错误可能在清单文件中。 如何在清单中定义依赖项? 如何使用Tlbexp.exe
定义依赖项? 我已经尝试过了:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="CommonInteropB"
version="1.0.0.0"
publicKeyToken="" />
<clrClass
clsid="{XXXXXXXXX}"
progid="CommonInteropB.SomeFactory"
name="CommonInteropB.SomeFactory"
threadingModel="Both" tlbid="{XXXXXXXXXXXXXXXX}"
runtimeVersion="v4.0.30319" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32"
name="CommonInteropA"
version="1.0.0.0"
publicKeyToken="" />
</dependentAssembly>
</dependency>
</asmv1:assembly>
并创建类型库:
tlbexp.exe CommonInteropB.dll /tlbreference:"CommonInteropA.tlb" /tlbreference:"C:\Windows\System32\stdole2.tlb" /tlbreference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb" /out:CommonInteropB.tlb
您的清单看起来不错。 依赖关系由dependency元素指定。
tlibimp似乎正在检查注册表和工作目录中的依赖项(尽管我找不到与此相关的文档)。 如果安装程序需要并行执行,并且希望避免注册DLL,请确保程序集A和程序集B都位于工作目录中,并运行tlibimp B.tlb [options]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.