000
21.10.2008, 15:15 Uhr
stevieda
|
Hallo zusammen,
Ich habe folgendes Problem (habe die Suchfunktion und die FAQs bereits genutzt aber ich komme trotzdem einfach nicht weiter): Ich nutze die Programmierschnittstelle eines CAD-Systems (Visual Basic 6) und bin nun auf DLLs einer externen Firma angewiesen. Diese DLLs sind in C++ programmiert.
C++: |
//#######Definition der Funktion in der DLL######## #define dll_intern extern "C" __declspec(dllimport) //################################################## dll_intern bool _cdecl LoadSTL (const char* fnm, T3DVECF *& P, int32 & n, TRIANGLE *& T, int32 & m); //################################################## typedef signed long int32; // 32 Bit mit Vorzeichen
struct T3DVECF { public: float x; float y; float z; };
|
Betrachtet man z.B. die oben dargestellte Funktion, so erkennt man, dass der Funktion ein String und des Weiteren ein Zeiger auf eine Referenz auf T3DVECF übergeben wird. T3DVECF ist dabei eine Struktur, bestehend aus drei float.
Im Programm wird anschließend mittels
C++: |
P = new T3DVECF [n];
|
Speicher für P allokiert. P ist also vielmehr ein Array aus Strukturen, welche wiederum aus drei float bestehen. Die Elementanzahl des Array steht erst zur Laufzeit des Programms fest. Da Visual Basic keine Pointer kennt, möchte ich den Umweg über eine eigene C++-DLL gehen. Diese C++-DLL soll dann die VB-gerechte Datenaufbereitung übernehmen. Aber wie kann ich nun von meinem C++-Programm auf dieses Array zugreifen? Die oben definierte Funktion ist vorgegeben, d.h. ich muss einen Doppelzeiger (oder ist es etwa keiner?) nutzen. Wie müsste der Funktionsaufruf in meiner Applikation aussehen? Wie müssen die Daten an dieser Stelle definiert werden? Gibt es hierzu elegantere Alternativen? Intensive Internet-Recherche brachte hierzu keine Lösung.
Für ein ganz simples Beispiel zur Veranschaulichung wäre ich wirklich sehr dankbar (z.B. hochzählen eines Werts, also P[1].x += 1.
Ich bin absoluter C++-Anfänger und bitte um Entschuldigung für etwaigen Missbrauch von C++-Begriffen. Ich bin wirklich für jede Form der Anregung dankbar und hoffe, dass mir jemand bei diesem für mich sehr wichtigen Problem helfen kann. Vielen Dank! -- Gruß, Stevie |