c++ - 将 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”
但是我们在尝试所有类型时都得到了空值。
解决方案
推荐阅读
- xpath - 建立“目录”
- c# - Entity Framework 6 与 Entity Framework Core - 细微差别?
- jquery - 隐藏具有特定类的最接近的元素
- c# - Serilog Network.Sink json 输出格式
- java - 使用 Java Opencv 检测图像中的最大矩形 [已解决]
- javascript - 使用 React 编译 opencv.js 失败
- python - 将字符串的所有字母移动某个步骤
- javascript - 字幕轨道 HTML5 元素不会在视频中更新
- python - 将同一文件夹中的多个文件读取到不同的数据帧
- java - 我正在尝试使用 4 个点在 ImageView 上标出 4 个点。当我移动其中一个视图时,另一个视图会自动移动