Announcement

Collapse
No announcement yet.

vb.net c/c++ string array an dll übergeben und wieder zurück

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • vb.net c/c++ string array an dll übergeben und wieder zurück

    Guten Abend Community

    Ich versuch eine normale string Array an eine C/C++ Dll zu übergeben und diese wieder zurückzugeben.

    Irgendwie will das nicht funktionieren. Strings zu übergeben ist kein Problem, da habe ich viele Beispiele im Netz gefunden. Jedoch wie kann man eine Array übergeben?

    Vielen dank für die Hilfe

    Freundliche Grüsse

    exc-jdbi



    Hier die C/C++ DLL
    Code:
    extern "C" __declspec(dllexport) BOOL _stdcall Test(char *s,char **pStr,char **cArrStr,char ***pArr)
    {
    	*pStr=s;
    
    	int intSize=sizeof(cArrStr)/sizeof(&cArrStr[0]);
    	
    	static std::vector<char*>vArr(intSize);	
    	for(int i=0;i<intSize;i++)
    	{
    		vArr.push_back(cArrStr[i]);
    	}
    
    	*pArr=vArr.data();
    
    	return TRUE;
    }
    Der VB.Net Code
    [highlight=vbnet]
    Dim p1, p2, p3, p4 As IntPtr
    Try
    Dim strTxt As String = String.Empty
    Dim str As String = "Ich bin ein String"

    Dim strArrBack As String() = {}
    Dim strArr As String() = {"Ich", "bin", "eine", "Array"}

    p1 = Marshal.StringToHGlobalAnsi(str)
    p2 = Marshal.AllocHGlobal(Marshal.SizeOf(IntPtr.Zero))

    'Wie muss ich die Array hier deklarieren
    'p3 = Marshal.
    p4 = Marshal.AllocHGlobal(Marshal.SizeOf(IntPtr.Zero))
    If (dll.Test(p1, p2, p3, p4) <> 0) Then
    Dim p As IntPtr = Marshal.ReadIntPtr(p2)
    strTxt = Marshal.PtrToStringAnsi(p)

    p = Marshal.ReadIntPtr(p3)

    'Wie muss die Rückgabe gemarshelt werden
    'strArrBack=

    End If
    Finally
    Marshal.FreeHGlobal(p1)
    Marshal.FreeHGlobal(p3)
    End Try
    [/highlight]


    [highlight=vbnet]
    'Ist in einer Classe dll
    <DllImport("Test.dll")> _
    Public Shared Function Test(ByRef str As IntPtr, ByRef strR As IntPtr, ByRef arr As IntPtr, ByRef arrR As IntPtr) As Integer
    End Function
    [/highlight]

  • #2
    Hab die Anfrage 'ausnahmsweise' in einem anderen Forum nochmals gestellt.
    http://www.vb-paradise.de/index.php/...rray-to-c-Dll/

    Freundliche Grüsse

    exc-jdbi

    Comment

    Working...
    X