Python:对__imp __Py_InitModule4的未定义引用

12 python

我正在尝试使用mingw的gcc进行Rabbyt库的调试构建,以使用我的MSVC构建的python26_d运行..我得到了很多未定义的引用,这使我创建了libpython26_d.a,但其中一个未定义的引用仍然存在.谷歌搜索给了我:

http://www.techlists.org/archives/programming/pythonlist/2003-03/msg01035.shtml

但是-rdynamic没有帮助.

e:\MinGW/bin\gcc.exe -mno-cygwin -mdll -O -Wall -g -IE:\code\python\python\py26\
include -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: warning: '__Pyx_SetItemInt' defined but not used
writing build\temp.win32-2.6-pydebug\Debug\rabbyt\_rabbyt_d.def

e:\MinGW/bin\gcc.exe -mno-cygwin -shared -g build\temp.win32-2.6-pydebug\Debug\r
abbyt\rabbyt._rabbyt.o build\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: In function `init_ra
bbyt':

E:/code/python/rabbyt/rabbyt/rabbyt._rabbyt.c:1121: undefined reference to `_imp
__Py_InitModule4'

tih*_*iho 22

如果有人遇到同样的错误消息,但在不同的情况下:尝试添加-D MS_WIN64到您的命令行,它对我有用!


Dav*_*vid 18

C:\Python27\Lib\distutils\cygwinccompiler.py包含MinGW编译器设置的文件中,找到Mingw32CCompiler类:

self.set_executables(compiler='gcc -O -Wall',
    compiler_so='gcc -mdll -O -Wall',
    compiler_cxx='g++ -O -Wall',
    linker_exe='gcc ',
    linker_so='%s %s %s'
        % (self.linker_dll, shared_option,
        entry_point))
Run Code Online (Sandbox Code Playgroud)

并添加-D MS_WIN64compiler_so参数:

compiler_so='gcc -mdll -O -Wall -D MS_WIN64'
Run Code Online (Sandbox Code Playgroud)

  • 无需弄乱已安装的distutils模块.只需添加`define_macros = [('MS_WIN64',None)]`作为setup.py中setup设置调用的参数. (2认同)

小智 4

我的 Cygwin 和 MinGW gcc 安装相互冲突。我删除了它们,并安装了没有 gcc 的 MinGW 和 cygwin,这解决了问题。