簡體   English   中英

免費注冊COM互操作。 組件B參考組件A?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM