Регистрация свободного COM взаимодействия. сборка B справочная сборка A?

Директива #import используется в C++ для импорта библиотеки типов. Атрибут " no_registry " Указывает компилятору не искать в реестре библиотеки типов.

Пример:

#import "XXX.tlb" no_namespace named_guids no_registry

Вопрос: я хочу сделать то же самое в Delphi: я знаю, что используется TLIBIMP, но я не могу найти какой-либо атрибут, такой как no_registry,

Пример:

TLIBIMP "XXX.tlb" ????

Как это сделать, или это вообще возможно?

ОБНОВИТЬ:

У меня есть бок о бок Ассамблеи бок о бок. COM сборка (B), которая ссылается на COM Узел (А). ошибка может быть в файле манифеста. Как я могу определить зависимость в манифесте? Как я могу использовать 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 

1 ответ

Решение

Ваш манифест выглядит нормально. Зависимость определяется элементом зависимости.

Кажется, tlibimp проверяет зависимости в реестре и в рабочем каталоге (хотя я не могу найти документацию для этого). Если ваша установка требует параллельного выполнения и вы хотите избежать регистрации своих DLL, убедитесь, что и сборка A, и сборка B находятся в рабочем каталоге, и запустите tlibimp B.tlb [options],

Другие вопросы по тегам