Tjenare Hej Mitt problem är att jag inte använder String alls utan dll funktionen tar bara imot en long min källkod: Troligtvis har funktionen exporterats med ett "manglat" namn, för __stdcall är det normalt med formatet _Foo@X, där X är parameterstorleken i bytes (en multipel av 4) för funktionen Foo.Annat funktions namn??
Mina problem med C++ dll i VB börjar bli en följetång så här kommer en nöt till att knäcka. Jag anropar en funktion i en C++ dll och det är inge problem (förutom att det inte går att köra i debugg i VB för då får jag bara 'Bad DLL calling convention') Då var det någon som sa till mig att man skall kompilera om Dll i _STDCALL istället för _CDECL som Calling Convention Jaha sagt och gjort så gör jag det med det är sedan det mystiska uppträder för då hittar inte VB funktionen längre utan jag får 'Can't find DLL entry point etc' Det verkar som om det är skillnad på namnen?? kan det vara det??
Mvh HSv: Annat funktions namn??
En sanning som du skall hålla dig till är STDCALL.
Det som ställer till problem är när man skickar strängar.
Som skall lämnas över som ASCIIZ och skall bestå av en
nullterminated string ,dvs det skall komma ett nulltecken
som avslutning på strängen.Enl min uppfattning får man det
om man i sin Declaresats i VB skriver ByVal As String.
Nu vet jag inte men "spånar" är det möjligtvis så att C++ dllen
vill ha Unicode.
Du kan kolla vilket API call som helst. Ditt VBcall skall likna dessa.
Krutet skall alltså läggas på C++ kompileringen STDCALL.
Lyckades få en Delphi Dll att funka enl dessa regler.
mvh
SvenSv: Annat funktions namn??
VB:
Public Declare Function CreateData Lib "E:\Test.dll" (ByVal pDb As Long) As Long
Dim Temp As Long
Temp = CreateData(10)
är ju ganska enkel kan tyckas med den vägrar i sten att funka (om man inte kör _cdecl så man inte kan köra i Debugg) =(
/HSv: Annat funktions namn??
Du kan kolla under vilket namn funktionen har exporterats med verktyg som Quick View, Dumpbin och Dependency Walker.
Du kan antingen ange det exporterade namnet som Alias i din Declare sats i VB. Eller så använder du en DEF fil för att exportera funktionen under sitt "rätta" namn. Du bör kunna hitta mer information om DEF filer i dokumentationen för din C++ länkare.
MS