30. oktober 2001 - 12:37Der er
9 kommentarer og 1 løsning
Parmeteroverførsel af array fra vb til c++
Jeg skal have en funktion i C++ til at modtage et array fra VB.
Nedenstående er der et kort eks. som ikke virker, da det array VB prøver at overføre er en Varians, mens C++ forventer et array af integer. Derfor kommer fejlen \"type mismatch\"
C++ koden: #define MYTESTDLLEXIM extern \"C\" __declspec(dllexport)
#include \"main.h\"
MYTESTDLLEXIM long _stdcall BrugArray( int testarray[] ) { return ( testarray[1] ); }
VB-koden: Option Explicit
Private Declare Function BrugArray Lib \"C:\\Documents and Settings\\mlj\\My Documents\\Data\\VisualProjects\\eks VB_C\\vb_code\\MyTestDll.dll\" (ByVal testarray As Integer) As Integer
Private Sub Form_Load() Dim testarray testarray = Array(10, 20) Debug.Print \"array: \" & BrugArray(testarray) End Sub
Nogen der har ideer til hvordan jeg (optimalt set) får C++ til at arbejde med varians, eller (mindre optimalt) får VB til at overføre arrayet med den rigtige type istedet for varians??
Så opfattes det ikke som et array mere og hvis jeg fx skriver \"Debug.Print testarray(0)\" som burde udskrive arrayets første plads, får jeg fejlen: \"expected array\"
MYTESTDLLEXIM long _stdcall BrugArray( int *testarray[] ) { return (&testarray[0]); }
Private Declare Function BrugArray Lib \"C:\\Documents and Settings\\mlj\\My Documents\\Data\\VisualProjects\\eks VB_C\\vb_code\\MyTestDll.dll\" (ByVal testarray As Integer) As Integer
ByVal skal så være ByVar eller fjernes helt
Private Sub Form_Load() Dim testarray testarray = Array(10, 20) Debug.Print \"array: \" & BrugArray(testarray) End Sub
I må undskylde at jeg ikke har givet noget respons. Jeg havde helt glemt diskussionen. Jeg arbejdet med SAFEARRAYS istedet, dette burde kunne løse problemet. Tak for indlæggende.
Jeg ville forresten have givet jer alle point, men kom til at give dem alle til den første på listen (jeg tror at det var disky) sorry.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.