Python: référence non définie à `_imp __Py_InitModule4 '
Je suis en train de faire une version de débogage de la Rabbyt de la bibliothèque à l'aide de mingw gcc courir avec mon MSVC construit python26_d.. j'ai eu beaucoup de undefined références qui m'a amené à créer libpython26_d.un, cependant, l'un de l'indéfini des références reste. Une recherche sur google me donne:
http://www.techlists.org/archives/programming/pythonlist/2003-03/msg01035.shtml
Mais -rdynamic ne l'aide pas.
e:\MinGW/bin\gcc.exe -mno-cygwin -mdll -O-Wall -g -IE:\code\python\python\py26\ comprennent -IE:\code\python\python\py26\PC -c rabbyt/rabbyt._rabbyt.c -o build\temp .win32-2.6-pydebug\Debug\rabbyt\rabbyt._rabbyt.o -O3-fno-strict-aliasing rabbyt/rabbyt._rabbyt.c:1351: avertissement: '__Custode_SetItemInt " n'est pas définie, mais pas utilisé l'écriture de construire\temp.win32-2.6-pydebug\Debug\rabbyt\_rabbyt_d.def e:\MinGW/bin\gcc.exe -mno-cygwin -partagé -g build\temp.win32-2.6-pydebug\Debug\r abbyt\rabbyt._rabbyt.o construire\temp.win32-2.6-pydebug\Debug\rabbyt\_rabbyt_d.def - LE:\code\python\python\py26\libs -LE:\code\python\python\py26\PCbuild -lopengl32 -lglu32 -lpython26_d -lmsvcr90 -o build\lib.win32-2.6-pydebug\rabbyt\_rabbyt_d. pyd build\temp.win32-2.6-pydebug\Debug\rabbyt\rabbyt._rabbyt.o: Dans la fonction " init_ra bbyt': E:/code/python/rabbyt/rabbyt/rabbyt._rabbyt.c:1121: undefined reference to `_imp __Py_InitModule4'
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Si quelqu'un vient sur ce même message d'erreur, mais dans une situation différente: essayez d'ajouter
-D MS_WIN64
à votre ligne de commande, il a travaillé pour moi!Dans le fichier
C:\Python27\Lib\distutils\cygwinccompiler.py
qui contient le compilateur MinGW paramètres, trouver leMingw32CCompiler
classe:et ajouter
-D MS_WIN64
à lacompiler_so
argument:J'ai vu cette si vous essayez de mélanger de code objet compilé pour le débogage (
_DEBUG
macro est définie avec la non-debug objets (_DEBUG
n'est pas défini).Il y a une ligne dans le python, le code de base que
#defines Py_InitModule4
à un autre nom (Py_InitModule4TraceRefs
) pour déclencher un "lien de l'erreur" (!sic) si vous mélangez des objets.Assurez-vous que vous lier avec un python de débogage de la bibliothèque lorsque vous compilez pour le débogage et vice-versa.
Je viens de résoudre ce problème en ajoutant le compilateur drapeau
-DPy_TRACE_DEFS
. Dans mon cas, j'ai essayé de construire des versions de débogage de SIP/PyQt.L'erreur peut se produire lorsque la version de débogage Python est compilé avec le
Py_TRACE_DEFS
option activée. Cela provoque la résultante python2x_d bibliothèque pour contenir la fonctionPy_InitModule4TraceRefs
au lieu dePy_InitModule4
que le compilateur est à la recherche d' (parmi d'autres changements). Commutation de l'option sur le projet de construction assure le code produit est compatible, et que la version correcte dePy_InitModule4
est trouvé.Plus d'informations sur
Py_TRACE_DEFS
peut être trouvé dansMisc/SpecialBuilds.txt
dans la source Python dossier ou ici.Mon Cygwin et MinGW gcc installe étaient en conflit les uns avec les autres. J'ai supprimé tous les deux et l'installation de MinGW et cygwin sans gcc et qui a résolu le problème.