c# - 注册免费 COM 互操作。程序集 B 引用程序集 A?

标签 c# c++ .net delphi typelib

#import Directive在 C++ 中用于导入类型库。 “no_registry”属性告诉编译器不要在注册表中搜索类型库。

例如:

#import "XXX.tlb" no_namespace named_guids no_registry

问题: 我想在 delphi 中做同样的事情: 我知道TLIBIMP已使用,但我找不到任何属性,如 no_registry

例如:

TLIBIMP "XXX.tlb" ????

这是如何完成的,或者这是否可能?

更新:

我有一个并排并排的程序集。 引用 COM 程序集 (A) 的 COM 程序集 (B)。 错误可能在 list 文件中。 如何在 list 中定义依赖项? 我如何使用 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 

最佳答案

您的 list 看起来不错。依赖项由 dependency 元素指定。

tlibimp 似乎会检查注册表和工作目录中的依赖项(尽管我找不到这方面的文档)。如果您的设置需要并行执行并且您希望避免注册 DLL,请确保程序集 A 和程序集 B 都位于工作目录中并运行 tlibimp B.tlb [options]

关于c# - 注册免费 COM 互操作。程序集 B 引用程序集 A?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343718/

相关文章:

c++ - 使用 C++ 附加 CORBA 序列的简单方法

c++ - 将 -lm 标志传递给 qt 编译器以摆脱 "cannot open file “m.lib”

c# - WPF MVVM : How to close a window

c# - 将 WebProxy 与 HttpClient.SendAsync() 和 HttpRequestMessage 结合使用

c# - 在 EF Core 7.0 中使用 Database.SqlQuery<T> 查询自定义类型

c# - 如何在 WPF 中设置功能区窗口的用户控件?

c# - ASP.NET 路由 - 带数据库查找的路由约束

c++ - CUDA内核模板实例化导致编译错误

c# - 单击 gridview 中的选择按钮时页面刷新

C#根据参数值在子列表中拆分列表