Ich benutze Linux x86_64 Maschine, um mein Programm zu bauen. Ich habe eine shared library mit einer ausführbaren Datei verknüpft. In meinem Projekt rufe ich eine Funktion auf, die innerhalb der Funktion vector<string>
deklariert hat. Mein Programm wird beendet, wenn diese Funktion aufgerufen wird. Beim Debuggen über GDB unten ist die Ausgabe, die ich bekomme.Programm empfangenes Signal SIGILL, ungültige Anweisung
Program received signal SIGILL, Illegal instruction.
0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87
87 : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
(gdb) bt
0 0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87
Ist diese Ausgabe der Kompilierung meiner freigegebenen Bibliothek? knallte meinen Kopf genug darauf. Bitte helfen Sie.
-Chaks
weitere Informationen für Ihre Fragen hinzu: Ja, Funktion, die ich File_ToText nenne ist eine virtuelle Funktion in der Klasse OC_Catalog_c. Eine Membervariable einer anderen Klasse hat ein Objekt der Klasse OC_Catalog_c, das auch die virtuelle Funktion File_ToText hat. Unter Verwendung dieses Objekts rufe ich die Funktion File_ToText von OC_Catlog_c aus der virtuellen Funktion File_ToText auf. Ich werde einen Code-Schnipsel zeigen:
class Oc_Catalog_c
{
virtual vector<string> File_ToText (void) const;
}
class B
{
const OC_Catalog_c* m_pCatalog;
virtual vector<string> File_ToText (void) const;
}
vector<string> B::File_ToText(void) const
{
vector<string> a_SubData;
a_SubData = m_pCatalog->File_ToText();
}
Bitte starten Sie mit einem Code-Schnipsel für Starter einfügen, und mehr über die Bibliothek erzählen. – lpapp
Welche Optionen verwenden Sie beim Kompilieren mit g ++? Bauen Sie auch die Shared Library oder haben Sie sie woanders bekommen? – idfah
Es kann auch nützlich sein zu wissen, auf welchem Prozessor Sie laufen und welche Linux Distribution und Version Sie verwenden. – cordoro