首页 > 解决方案 > 如何将以下 c++ 方法编组为 c#

问题描述

我们需要在 c# 中导入原生 c## 方法,但我们不知道如何正确编组代码。尤其是我们不知道要使用哪些数据类型。

dll 导入中使用的数据类型是否正确?

VDLL32 LS_STATUS_CODE VMSWINAPI MyMethodToImport(
      unsigned char LSFAR *server_name, /*  IN */
      VLSservInfo   LSFAR *srv_info,  /* out */
      unsigned char LSFAR *unused1,   /*reserved*/
      unsigned long LSFAR *unused2    /*reserved*/
   );

对于 C#,我们使用了以下内容:

[DllImport(LibraryName, CallingConvention = CallingConvention.Cdecl, EntryPoint = "MyMethodToImport", CharSet = CharSet.Ansi)]
                public static extern int MyMethodToImport(ref VLSservInfo servInfo, IntPtr serverName);

当前结果为空,因此在本机 dll 中未正确解释 serverName 我期望一个非空的 ServInfo 对象,但实际输出为空。

标签: c#c++marshalling

解决方案


推荐阅读