2017-01-13 6 views
1

해당 API 참조는 here입니다.vb에서 linphone_core_get_calls을 가져오고 호출하려면 어떻게합니까?

나는 제대로 같이 DllImport 다음 VB에서 이것을 사용하는 방법을 알고해야합니다

const bctbx_list_t* linphone_core_get_calls ( LinphoneCore * lc ) 

내가 함께하는 데 문제 부분은 const bctbx_list_t* 반환 값입니다. 이처럼 사용하여 다음

<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.

이 어떤 도움을 크게 감상 할 수 나는 이런 식으로 같이 DllImport를 선언 시도 .

+0

왜'bctbx_list_t'는 .NET의'List'와 같은가요? 거의 확실하지 않습니다. 'bctbx_list_t' 타입이 정의 된 곳을 찾고 더 잘 선언하는 방법을보십시오. 불투명 한 객체라면'IntPtr'로 선언하십시오. – GSerg

+0

@GSerg 감사합니다. –

답변

0

GSerg의 의견을 바탕으로, 나는 bctbx_list_t의 정의를 찾으러 갔는데, 이것은 here입니다. 이 링크 된 목록입니다 :로 가져 오기를 변화

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

:

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

난에 그 번역

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

그리고 비즈니스에있어.