gpt4 book ai didi

com - 在 C++ 中调用 Visual Basic DLL,第 2 部分

转载 作者:行者123 更新时间:2023-12-04 14:20:47 24 4
gpt4 key购买 nike

这个问题是对上一个问题 (here) 的跟进。
我从第三方供应商处获得了一个用 Visual Basic 创建的 DLL ( Sensor DLL.dll )。这个 DLL 包含与传感器通信的函数,我需要从我正在编写的 Visual C++ 程序中调用这些函数。供应商不会提供头文件,而且我不知道 Visual Basic。
我对每个函数都有少量文档。例如,有人告诉我 DLL 中的一个函数 ( Get_Data ) 采用以下形式:

Public Function Get_Data(ByVal Handle As String) As String
这将返回一个值在 -16777216 和 +16777215 之间的字符串。就这些。
在上一个问题用户 Hans Passant给出了这个有用的答复:

A VB6 DLL is normally a COM server. You do in fact have the equivalent of a .h file, it has a type library embedded in it. Start this off with Project + Properties, Common Properties, Framework and References. Add New Reference button, Browse tab, select the DLL.

Next, View + Object Browser. You should see the generated Interop library in the list. Open the node to see what is there. You write normal managed code, like gcnew, to create the COM object and call the interface methods. You do need some minimum documentation on the available methods to have a guess at how they should be called.


按照这个建议,我确实在对象浏览器中看到了 DLL 中的函数列表,包括 Get_Data(System::String)但是,我对使用 COM 对象感到困惑,这超出了我的经验。
我试过简单地调用 Get_Data(Handle);在哪里 Handle现在是 BSTR,因为我已将引用添加到我的项目,但它未被识别。我也试过调用 CoInitialize首先,但这并没有帮助。
谁能具体告诉我我现在需要写什么来调用该函数?谢谢!

最佳答案

如果我正确理解您的情况,您至少有一个在 VB6 .dll 中实现的 COM 对象。要使用此对象,您必须在调用 GetData 方法之前创建 COM 对象的实例。 CoInitialize 只会初始化 COM 系统。您还必须使用像 CoCreateInstance 这样的 API。

关于com - 在 C++ 中调用 Visual Basic DLL,第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688325/

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