如何在 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
我在做生意。
有问题的 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
我在做生意。