2016-11-20 1 views
2

Ich versuche, ein Programm zu machen, das mit MS Excel unter Verwendung libxlsxwriter interagiert. Ich verwende MSYS2 mit Mingw-w64, um meine Anwendung zu erstellen. Immer wenn ich versuche, meinen Code mit der 64-Bit-Version von gcc zu kompilieren, funktioniert alles einwandfrei; Wenn ich jedoch versuche, mit der 32-Bit-Version von GCC zu kompilieren, gibt es mir diese Art von Fehler für jede Funktion, die ich verwende: C:\msys64\tmp\ccknaH4k.o:main.cpp:(.text+0x16): undefined reference to 'workbook_new'. Was könnte es sein?undefined Verweis auf [...] beim Erstellen von Programmen mit libxlsxwriter

Antwort

1

Die Bibliothek erscheint für 64-Bit nur gebaut worden, so dass, wenn Sie versuchen, ein 32-Bit-Binär mit ihm zu verbinden, der Linker nur in der Lage ist 64-Bit-Symbole, nicht 32-Bit zu finden Einsen.

Um dies zu lösen, müssen Sie eine 32-Bit-Version der Bibliothek kompilieren oder herunterladen.

+0

Die Bibliothek ist sowohl für 32-Bit- als auch für 64-Bit-Systeme geeignet. Sie müssen die Bibliothek erstellen, um sie zu verwenden. Ich benutzte die MINGW32-Shell und kompilierte sie erneut mit 'make' und' make install', aber mit den gleichen Ergebnissen. Eine andere seltsame Sache ist, dass die kompilierten Bibliotheken standardmäßig in 'C: \ msys64 \ usr \ lib' stehen und wenn ich den 32-Bit gcc benutzen will, muss ich die Bibliotheken in' C: \ msys64 \ mingw32 \ kopieren. lib' (dies passiert nicht mit der MINGW64-Shell). – sgrontflix

+0

@sgrontflix, haben Sie die Binärdatei mit der korrekten 32-Bit-Bibliotheksdatei verknüpft, wenn Sie für 32-Bit erstellen? – ForceBru

+0

Ich bin mir nicht sicher, ich verwende diesen Befehl ---> 'gcc myexcel.c -o myexcel -lxlsxwriter -lz' zum Kompilieren und Verknüpfen von Bibliotheken mit meiner ausführbaren Datei. Wie kann ich sicherstellen, dass ich tatsächlich eine 32-Bit-Bibliothek verknüpfe? Es tut mir leid, wenn ich dumm aussehe, aber ich bin neu in diesen Dingen. – sgrontflix