Forum: PC-Programmierung C DLL in VB.NET einbinden


von HalloIhr (Gast)


Lesenswert?

Hallo,
ich möchte eine Dll in VB einbinden.

Für die Funktion TestF mache ich das so
Funktion in c:
1
int TestF(int Test);

<DllImport("TestDll.dll")>
Public Shared Function TestF(ByVal Test As Integer) As Integer
End Function

Aufruf dann über:

Dim res as Integer
res = TestF(1)

Jetzt habe ich auch eine Funktion die einen bool-pointer braucht:
1
int SyncTest(int iVersion,
2
             bool *pbSyncPassed,
3
             int iTestNr,
4
             int iTestcase);

Ich habe keine Ahnung wie ich den bool pointer übergebe und wie ich dann 
im Programm die Funktion aufrufe?
Kann mir bitte jemand helfen?
Danke schonmal

von Peter II (Gast)


Lesenswert?

http://msdn.microsoft.com/en-us/library/ms235282.aspx

* ist ja immer ein zeiger, also wird es mit IntPtr funktionieren. Die 
Frage ist wie man dann an den wert rankommt.

von HalloIhr (Gast)


Lesenswert?

muss ich den IntPtr in VB dann byVal oder byRef übergeben?

kannst du ein VB CodeBeispiel zeigen? wenn ich die Funktion deklariere 
als:

Public Shared Function SyncTest(ByVal iVersion As Integer, _
ByRef bSyncPassed as IntPtr, ByVal iTestNr As Integer, _
ByVal iTestcase As Integer) As Integer
End Function

Da motzt der Compiler, wenn ich es als ByVal deklariere auch ... ich 
komm irgendwie nicht weiter mit dem blöden bool pointer.
Boolean pointer gibt es in VB nicht und soweit ich weiß ist VB boolean 
!= C bool.
Klappt es evtl nicht weil C bool 1 byte ist und der VB integer 4 byte?
Kann ich in VB einen pointer auf ein 1 byte objekt erstellen? wie?
Kann bitte jemand einfach ein VB Beispiel posten wie man die Funktion 
SyncTest in einem VB Programm deklariert und anspricht?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.