gpt4 book ai didi

c++: 使用 Visual Basic dll

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:18 25 4
gpt4 key购买 nike

我有一个用 Visual Basic 编写的第三方 DLL,我正试图从 C++ 中使用它。我没有它的源文件和头文件,只有关于它的类和方法(包括它们的签名)的文档。

我发现有些文章说我不能直接使用那个dll,因为它是用Visual Basic写的,是托管的,我应该通过COM来使用它

  1. 注册 DLL:regasm/codebase/tlb:ThirdPartyDll.tlb ThirdPartyDll.dll

  2. 导入它:#import "../Debug/ThirdPartyDll.tlb"

  3. 初始化 COM:CoInitialize(NULL);

  4. 实例化对象:ThirdPartyClassPtr ptrThirdPartyClass(_uuidof(ThirdPartyDll::ThirdPartyClass));

  5. 调用对象的方法:ptrThirdPartyClass->ThirdPartyClassMethod();

我有以下两个问题

一个。在步骤 #1 中成功注册了 dll,但我忽略了如下警告,因为它们提到了我不需要的类。

类型库导出器警告处理 ThirdPartyDll.AnotherClassThatIDontUse, ThirdPartyDll。警告:类型库导出器遇到了派生自泛型类且未标记为 [ClassInterface(ClassInterfaceType.None)] 的类型。不能为此类类型公开类接口(interface)。考虑使用 [ClassInterface(ClassInterfaceType.None)] 标记类型,并使用 ComDefaultInterface 属性将显式接口(interface)作为默认接口(interface)公开给 COM。

B. ThirdPartyClassPtr 类中可用的所有方法在 C++ 代码中都不可见。唯一可以调用的方法是以下方法,它们不是由 ThirdPartyClass 定义的,而是由其他东西定义的(可能是编译器在处理导入命令时定义的)。

  • 添加引用
  • 获取IDsOfName
  • 获取类型信息
  • 获取类型信息数
  • 调用
  • 查询接口(interface)
  • 发布

任何想法可能是错误的?

最佳答案

如果它是一个 VB.NET Dll,为了了解它是如何工作的,我会开始使用 dll 编写一个虚拟项目(C#、VB,无论你喜欢什么),然后你会看到方法、属性等等,然后你应该能够翻译这个

关于c++: 使用 Visual Basic dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20253444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com