Ich habe eine Funktion in C++ geschrieben und erfolgreich gebaut.Boost Python C++ - Funktion einen anderen Funktionsfehler aufrufen
Allerdings, wenn ich es gerade von einer anderen Funktion in C++ aufrufen, dann ist der Build fehlgeschlagen.
double getlistvalue(boost::python::list l, int index)
{
if (index = -1)
return 0;
else
return boost::python::extract<double>(l[index]);
}
double xx(boost::python::list l, int index)
{
return getlistvalue(l, index);
}
der obige Code, ohne die zweite Funktion, es baut.
hier ist der Fehler Info: error info
Bitte Ideen teilen, wie es zu lösen. Danke vielmals.
vielen dank für die antwort, ihre antwort ist richtig, wird das problem zu lösen. Gefunden, dass eine andere Möglichkeit ist, #define BOOST_PYTHON_STATIC_LIB vor dem Einfügen der Boost/Python-Header hinzuzufügen. Nur für Leute, die ähnliche Probleme haben. – datalearning
@datalearning Die Python-Liste hat einen Kopierkonstruktor. Wie Sie festgestellt haben, weisen die Fehlermeldungen (nicht aufgelöste Symbole) darauf hin, dass eine Verknüpfung mit der Boost.Python-Bibliothek mit der entsprechenden Sichtbarkeit des Symbols erforderlich ist. Python-Objekte werden als Referenz gezählt, und Boost.Python-Objekte sind im Wesentlichen intelligente Zeiger. Infolgedessen ist das Übergeben dieser Objekte nach Wert billig. –