如何在 vb 中导入和调用 linphone_core_get_calls?

How do I import and call linphone_core_get_calls in vb?

有问题的 API 参考位于 here

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

const bctbx_list_t* linphone_core_get_calls (   LinphoneCore *  lc  )   

我遇到问题的部分是 const bctbx_list_t* return 值。我试过这样声明 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)

编译但给我一个错误:

Cannot marshal 'return value': Generic types cannot be marshaled.

如有任何帮助,我们将不胜感激。

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

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

我在做生意。