2016-06-21 5 views
0

Also, ich habe im ganzen Internet gesucht und ich konnte nichts finden.Python.h kompilieren Fehler: collect2.exe ID zurückgegeben 1 Exit-Status

Ich bin mit Python gestartet, und ich habe eine TKinter-Anwendung. Zuerst habe ich versucht, es in eine EXE-Datei zu kompilieren, aber das hat nicht funktioniert. So, jetzt bin ich Python in C++ einbetten. Jedes einzelne Mal, wenn ich versuche, es zu kompilieren (mit Dev-C++), erhalte ich die Fehlermeldung:

C:\Users\*****\AppData\Local\Temp\ccsqSJ5V.o [program-name].cpp:(.text+0x10): undefined reference to `__imp_Py_Initialize' 
C:\Users\*****\AppData\Local\Temp\ccsqSJ5V.o [program-name].cpp:(.text+0x25): undefined reference to `__imp_PyRun_SimpleStringFlags' 
C:\Users\*****\AppData\Local\Temp\ccsqSJ5V.o [program-name].cpp:(.text+0x2e): undefined reference to `__imp_Py_Finalize' 
F:\Documents\Videos\[program-name]\program\collect2.exe [Error] ld returned 1 exit status 

F: steht für das Flash-Laufwerk. In den Dev-C++ Optionen, fügte ich hinzu:

-Wall -I\C:\Users\*****\AppData\Local\Programs\Python\Python35\include 

So dies der vollständige Befehl lautet:

g++.exe "F:\Documents\Videos\[program-name]\program\[program-name].cpp" -o "F:\Documents\Videos\[program-name]\program\[program-name].exe" -Wall -I\C:\Users\*****\AppData\Local\Programs\Python\Python35\include -I"C:\Programma's\Dev-C++\MinGW64\include" -I"C:\Programma's\Dev-C++\MinGW64\x86_64-w64-mingw32\include" -I"C:\Programma's\Dev-C++\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include" -I"C:\Programma's\Dev-C++\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++" -I"C:\Users\*****\AppData\Local\Programs\Python\Python35\include" -L"C:\Programma's\Dev-C++\MinGW64\lib" -L"C:\Programma's\Dev-C++\MinGW64\x86_64-w64-mingw32\lib" -static-libgcc 

Meine Frage ist: Wie mit dieser kann ich umgehen?

Und bitte beachten Sie: Ich habe keine Administratorrechte, ich bin nur ein Standardbenutzer.


Python-Version: 3.5.1
Dev-C++ Version: 5.11
GCC-Version: bei Bedarf :)

EDIT Ich weiß es nicht, aber ich werde es herausfinden: Weil des Duplikats Mark von NathanOliver, ich werde es so fragen: Welche Befehlszeilenvariablen muss ich hinzufügen, um es zu kompilieren?

+0

Die doppelte Frage, obwohl mehr Generika für alle fehlenden Symbole, werden die Menschen nicht um das Internet helfen, proeficient nicht in C/C++, versuchen Python-Erweiterungen zu bauen mit "dev C++" - Eine einzelne, kurze Antwort mit den richtigen Befehlszeilenparametern, die auf die richtige Python-Bibliothek verweisen, wäre hier eine weitaus nützlichere Internet-Ressource als ein "geschlossen als Duplikat". – jsbueno

+0

@jsbueno In der Vergangenheit programmierte ich ein bisschen in C, aber ich hörte auf, weil ich es nicht verstand. Aber stimme zu. Und Dev-C++ ist nur der C/C++ - Editor, an dem ich arbeite. Es hat nur eine eingebaute Compiler-Funktion, die GCC verwendet. – Thijs365

Antwort

1

Der Linker beschwert sich, weil er keine Gruppe von Referenzen über Python-Sachen finden kann, tatsächlich sehe ich im g ++ - Aufruf keine Python-Bibliothek.

Sie müssen etwas wie -lpython3.5.1 haben, um g ++ anzuweisen, die Python-Bibliothek zu verknüpfen (vorausgesetzt, Python ist in Ihrem System installiert, andernfalls müssen Sie den Pfad zur Bibliothek mit der Option -L hinzufügen) .

Weitere Ressourcen auf g ++ Makefiles und zum Verlinken: https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html

+0

Ich habe Python lokal installiert, aber -lpython3.5.1 gibt 'Keine solche Datei oder kein Verzeichnis' zurück. Ich habe versucht: '-L 'C: \ Benutzer \ ***** \ Lokale \ Programme \ Python \ Python35',' -l "C: \ Benutzer \ ***** \ Lokale \ Programme \ Python \ Python35" , -L 'C: \ Benutzer \ ***** \ Lokale \ Programme \ Python \ Python35 \ include', '-l" C: \ Benutzer \ ***** \ Lokale \ Programme \ Python \ Python35 \ include' UND alles oben ohne Anführungszeichen. Nichts davon hat funktioniert. – Thijs365

+0

Es ist sehr einfach: Die Option -L muss auf den Bibliothekspfad zeigen, die -I (es ist ein i) auf den Header-Pfad. Dann fügen Sie den Bibliotheksnamen -lLibraryName hinzu. Wie hast du Python installiert? Ich würde damit beginnen, die Bibliothek in Ihrem System zu finden. Der Fehler, den Sie am Anfang gezeigt haben, ist der Linker, der Ihnen sagt, dass Sie vergessen haben, ihm von der Python-Bibliothek zu erzählen. Die "Keine solche Datei oder Verzeichnis" bedeutet, dass der Pfad, den Sie ihm gesagt haben, falsch ist. – Robbykk

+0

Ich habe Python über das Offline-Installationsprogramm in '% appdata% \ Programme \ Python \ Python35 'installiert. – Thijs365

Verwandte Themen