首页 > 解决方案 > 将 32 位 C++ dll 包装在 64 位的 COM 代码中,并用 VB.net 编写

问题描述

我们有非托管的 32 位 c++ dll,我们想将它包装在 64 位的 COM 代码中,并用 VB.net 编写。非托管 dll 方法具有指针数据类型的参数,我们无法从方法中获取所需的响应。此外,dll背后的代码是未知的

我们在 VB 中尝试了不同类型的数据类型来匹配 C++ 指针数据类型:我们尝试过 - BYTE()、String、long、arraylist、intptr、uintptr、progress.open4GL.memptr、byte、integer 等。

这就是我们导入 dll 和参数的方式(输入字符串,输入输出 ptr,输入输出 ptr),返回类型很长。问题在于 ptr 变量

<DllImport("wp2.dll")>
Public Shared Function WPStartJob(<MarshalAs(UnmanagedType.LPWStr)> typAvlista As String,
                                  ByRef mPVariabelLista As IntPtr,
                                  ByRef mPSubrapportLista As IntPtr) As Long
End Function

方法的输出(对于指针类型的参数)应该是字符串值的列表,例如。“ListaS_Sub.rpt”

但是我们在尝试所有类型时都得到了空值。

标签: c++vb.netprogress-4gl

解决方案


推荐阅读