2

有问题的 API 参考位于此处

我需要知道如何正确 DLLImport 然后在 vb 中使用它:

const bctbx_list_t* linphone_core_get_calls (   LinphoneCore *  lc  )   

我遇到问题的部分是const bctbx_list_t*返回值。我尝试像这样声明 dllimport:

<DllImport(LIBNAME, CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function linphone_core_get_calls(lc As IntPtr) As List(Of IntPtr)
End Function

然后像这样使用它:

Dim CurrentCallList As List(Of IntPtr) = linphone_core_get_calls(_LinPhoneCore)

编译但给我一个错误:

无法封送“返回值”:无法封送泛型类型。

任何帮助将不胜感激。

4

1 回答 1

1

根据 GSerg 的评论,我去寻找 bctbx_list_t 的定义,我在这里找到了。这是一个链表:

typedef struct _bctbx_list {
    struct _bctbx_list *next;
    struct _bctbx_list *prev;
    void *data;
} bctbx_list_t;

我将其翻译为:

Private Structure _bctbx_list
    Public [next] As IntPtr
    Public prev As IntPtr
    Public data As IntPtr
End Structure

将导入更改为:

<DllImport(LIBNAME, CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function linphone_core_get_calls(lc As IntPtr) As _bctbx_list
End Function

我在做生意。

于 2017-01-14T15:32:32.443 回答