UDT/Struct als Array in Dll für VB
-
Hallo !
So, der Titel dieses Threads ist ziemlich schlecht gewählt, aber immerhin kommt alles drin vor was ich wissen wollte bzw. wozu ich fragen habe.
Es folgt eine kleine Titel-Erläuterung ...UDT/Struct
In VB nennt man Struct's UDT's(UserDefinedType)
Die Struktur besteht aus 3 C-Stringsals Array
Habe in VB ein Array/Vektor einer Struktur. Dieser muß in einer C++-Dll verarbeitet werden.Folgendes Problem. Ich arbeite in einem VB Programm mit Strukturen, die zu weiteren Bearbeitung an eine C++ Dll übergeben werden, das klappt auch wunderbar. Jetzt stehe ich nur vor folgendem Problem und zwar muss ich ein Array/Vektor einer Struktur jetzt an die Dll übergeben. Wie mache ich das ???
Gruss Michael
-
Jetzt stehe ich nur vor folgendem Problem und zwar muss ich ein Array/Vektor einer Struktur jetzt an die Dll übergeben. Wie mache ich das ???
Das ist mit Sicherheit kein Standard-C++ Problem. Mit welchem Compiler arbeitest du?
-
HumeSikkins schrieb:
Das ist mit Sicherheit kein Standard-C++ Problem. Mit welchem Compiler arbeitest du?
Eigentlich doch schon denn Arrays einer Struktur sind doch keine Seltenheit oder wie meinst du das ???
Ich arbeite mit M$ Visual C++ 6.01
Gruss Michael
-
Wenn du erfolgreich sein solltest, teste es ausführlich. Wir haben an dieser Stelle mit Visual C++ als C-Compiler vor 2 Jahren eine Bauchlandung gemacht. Nachdem wir das Alignment angepasst hatten, funktionierte alles bis auf Strings. Dort gab es immer wieder Schwierigkeiten wenn die Strings eine ungrade Länge hatten. Ich konnte sie zwar in der dll lesen, aber nach dem Ändern - auch bei unveränderter Länge - war in VB dann Quatsch in den letzten 2 bis 4 zeichen.
Auf das Alignment achten. Obwohl beide Compiler aus dem selben Haus kommen haben sie ein unterschiedliches Alignment eingestellt.
-
PAD schrieb:
Wenn du erfolgreich sein solltest, teste es ausführlich. Wir haben an dieser Stelle mit Visual C++ als C-Compiler vor 2 Jahren eine Bauchlandung gemacht. Nachdem wir das Alignment angepasst hatten, funktionierte alles bis auf Strings. Dort gab es immer wieder Schwierigkeiten wenn die Strings eine ungrade Länge hatten. Ich konnte sie zwar in der dll lesen, aber nach dem Ändern - auch bei unveränderter Länge - war in VB dann Quatsch in den letzten 2 bis 4 zeichen.
Das heisst das Ihr es schon einmal hinbekommen habt, oder ???
Wie habt ihr das denn gemacht ??? Ich weiß absolut nicht wie ich ein Array einer Struktur an eine C++ Funktionen übergeben soll bzw. was ich in der C++ Dll schreiben muss, als Funtionsparameter, damit ich mit dem Array arbeiten kann. Bin am Verzweifeln.P.S.: Strings in einer Struktur/UDT sind problematisch. Auch in VB gibt es da immer wieder Probleme. Es gibt aber eine recht elegente Lösung.
Grüsse Michael
-
Freu diech nicht zu früh!
Wir sind nur bis zur Übergabe von Srukturn gekommen, haben dann diese String Probleme bekommen und entschieden, das wir VB derzeit fallenlassen.
Falls du es schaffen solltest ein Array einer Struktur zu übergeben, gelten dann die normalen C Reglen mit pointern. Blos ich
zweifle an der übergabe.Tut mir leid
-
Eigentlich doch schon denn Arrays einer Struktur sind doch keine Seltenheit oder wie meinst du das ???
Ne. Aber weder kennt Standard-C++ DLLs noch die Probleme, die bei der Kommunikation mit VB auftreten. Und wenn ich dich richtig verstehe, sind genau das deine Kernprobleme.
-> VC-Forum.
-
Sorry wegen der Doppelpost. Habe es erst eben gemerkt.
-
Verwendet VB nicht generell BSTR und SAFEARRAY?
http://msdn.microsoft.com/library/en-us/automat/htm/chap7_5alv.asp