![](/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.