Директива #import используется в C ++ для импорта библиотеки типов.
«no_registry«attribute Указывает компилятору не искать в реестре библиотеки типов.
Пример:
#import "XXX.tlb" no_namespace named_guids no_registry
Quastion:
Я хочу сделать то же самое в 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
Ваш манифест выглядит нормально. Зависимость определяется зависимость элемент.
Кажется, tlibimp проверяет зависимости в реестре и в рабочем каталоге (хотя я не могу найти документацию для этого). Если ваша установка требует параллельного выполнения и вы хотите избежать регистрации своих DLL, убедитесь, что и сборка A, и сборка B находятся в рабочем каталоге, и выполните tlibimp B.tlb [options]
,
Других решений пока нет …