Hallo zusammen,
ich benötige Hilfe bei folgendem Problem:
Eine VB-Applikation (Visual Basic 8 bzw. 2005) übergibt Werte an eine Funktion einer C++ - DLL. Unter anderem ist da auch ein Array mit Strukturen dabei. Ich komme nicht weiter, denn ich weiß nicht, wie ich das Array mit den Strukturen in C++ aufnehme und weiterverarbeite.
Mein VB-Code sieht folgendermaßen aus:
Der C++-Code sieht so aus:
Also ich bin wirklich für jede Form der Hilfe oder Anregung dankbar.
ich benötige Hilfe bei folgendem Problem:
Eine VB-Applikation (Visual Basic 8 bzw. 2005) übergibt Werte an eine Funktion einer C++ - DLL. Unter anderem ist da auch ein Array mit Strukturen dabei. Ich komme nicht weiter, denn ich weiß nicht, wie ich das Array mit den Strukturen in C++ aufnehme und weiterverarbeite.
Mein VB-Code sieht folgendermaßen aus:
Code:
Public Declare Function mytest Lib "CleanSTL.dll" (ByVal mystring As String, ByRef punkteliste As T3DVECF, _
ByRef dreiecksliste As T3DVECF, ByRef n As Long, ByRef m As Long) As Long
Public Type T3DVECF
x As Single
y As Single
z As Single
End Type
Public Type TRIANGLE
i As Long
j As Long
k As Long
End Type
Private punkteliste(1) As T3DVECF
Private dreiecksliste(1) As TRIANGLE
Sub main()
Dim pathname As String
Dim n As Long
Dim m As Long
Dim status As Boolean
pathname = "C:\MeineDLLs\CleanSTL.dll"
punkteliste(0).x = 24
punkteliste(0).y = 12
punkteliste(0).z = 5
punkteliste(1).x = 24
punkteliste(1).y = 12
punkteliste(1).z = 5
dreiecksliste(0).i = 1
dreiecksliste(0).j = 2
dreiecksliste(0).k = 3
dreiecksliste(1).i = 2
dreiecksliste(1).j = 6
dreiecksliste(1).k = 8
n = 24
m = 30
status = mytest(pathname, punkteliste, dreiecksliste, n, m)
Debug.Print "" & punkteliste(1).x
End Sub
Der C++-Code sieht so aus:
Code:
#include "stdafx.h"
typedef signed long int32; // 32 Bit mit Vorzeichen
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
struct T3DVECF
{
public:
float x;
float y;
float z;
} *punkteliste[1];
struct TRIANGLE
{
public:
int32 i;
int32 j;
int32 k;
} *dreiecksliste[1];
long _stdcall mytest(char *mystring, struct T3DVECF *punkteliste[1], struct TRIANGLE *dreiecksliste[1], int32 *n, int32 *m)
{
bool status;
(*punkteliste)[0].x += 1;
(*punkteliste)[0].y += 1;
(*punkteliste)[0].z += 1;
*n += 2;
*m += 2;
status=true;
return status;
}
Also ich bin wirklich für jede Form der Hilfe oder Anregung dankbar.
Zuletzt bearbeitet: