Ich mache Python-Wrapper für C++ - Bibliothek.Eingabe-Sting für Wrapped C++ - Funktion ändert sich nicht SWIG
mylib.i:
%module mylib
%include <std_string.i>
%{
#include "mylib.h"
%}
%apply const std::string & {std::string &};
%apply std::string & {std::string &};
int getResult(const std::string& path, std::string& result);
mylib.h:
#pragma once
#include <string>
myEnum {foo=0, bar};
myEnum getResult(const std::string& path, std::string& result);
Nach dem Erzeugen _mylib.so mit folgenden Befehl ein:
g++ -fPIC -Wall -Wextra -shared mylib_wrap.cxx -o _mylib.so -L. -lmylib -I/usr/include/python2.7/ -lpython2.7
ich als nächstes tun:
LD_LIBRARY_PATH=. python Python 2.7.2 (default, Dec 6 2016, 10:43:39)
[GCC 4.8.4] on linux4
Type "help", "copyright", "credits" or "license" for more information.
>>> import _mylib
>>> result= ""
>>> x = _mylib.getResult("somePath",result)
Nach der Ausführung meiner Funktion, x
gibt die richtige Antwort der Methode zurück. Auch ich habe Konsolenausgabe von meiner Funktion. Die Ergebniszeichenfolge ändert sich jedoch nicht. Wenn ich die Ergebniszeichenfolge mit "einigen Text" initiiere, und meine Funktion erneut aufrufen, print result
zurückgeben "some text"
. Was mache ich falsch?
Wenn Sie diesen Code betrachten, übergeben Sie die Variable 'json', nicht die Variable' result', also würde ich nicht erwarten, dass sie die Variable 'result' ändert. – Petesh
@Petesh Sorry, habe den Variablennamen nach Copypaste vergessen. –
@Petesh aber mit dem richtigen Eingangsparameternamen, Problem nicht verschwunden. –