Re: C++ und D - übergabe von Array
-
Hi zusammen,
hat von euch auch schon einmal in D programmiert?
Ich weiss dass ich hierfür im falschen Forum bin, aber bisher konnte man mir nicht weiterhelfen. Vieleicht kennt der eine oder andere ja D bzw. kann meine Frage einfach so beantworten.Bin gerade dabei ein C++ Programm von mir in ein D Programm einzubinden.
Das ganze realisiere ich mit einem Wrapper.Das klappt bisher alles, ich stosse jedoch auf ein Problem:
Eine Methode meines C++ Programms gibt einen std::vector<double> zurück.
Diesen Rückgabevector muss ich nun irgendwie in einen Datentyp in D umwandeln.Ich habe in meiner C++ Methode aus dem std::vector schon einen double[] erzeugt, da ich dachte diesen übergeben zu können, komme hier aber nicht mehr weiter.
Mein C++ Code - Wrapper.cpp:
// TODO: convert from C++ array to D Array int getSignalcluster(int val) { if(val >= getNumberOfSignalclusters(val)){ std::cerr<< "Wrapper.cpp: void getSignalcluster(int val) - val is greater than size of" "Clusterlist" << std::endl; throw "Exception"; } // unwichtig, hier hole ich mir einfach nur den vector std::vector<int> actualSignals = (*pri_ptr).getSignalcluster(val); int actualSignals_ary[actualSignals.size()]; for(int i = 0; i < actualSignals.size(); i++){ actualSignals_ary[i] = actualSignals[i]; } ////--> diesen möchte ich zurück geben: actualSignals_ary; return ???; }Meine main.d:
module main; import std.stdio; // returns the id's of the signals from cluster extern (C++) int getSignalcluster(int); int main() { ... getSignalcluster(i); return 0 ; }
-
Schreib das besser nach "Rund um die Programmierung", da laufen ab und an einmal ein paar D-Spinner herum.
-
Vielleicht mal hier gucken.
Oder Du schreibst ein C-Interface-Wrapper (meist ist das besser) und guckst dann hier.