我正在尝试使用cygwin在64位Win7机器上构建一个python扩展DLL(因为cygwin只运行32位进程,这实际上是交叉编译)。
我自己使用dlltool从python27.dll创建了libpython27.a(例如,here所解释),但是在链接器阶段编译失败
skipping incompatible c:\Python27\libs/libpython27.a when searching for -lpython27
这正是报告的错误here(那个人最终转向MSVC编译器......)。
更多信息:
- Active Python 2.7.2,win64,x64
- 使用/usr/bin/x86_64-w64-mingw32-g++.exe编译器的最新版cygwin
有人知道这是否得到支持?
有没有办法使用我想念的dlltool?
(我确实找到here使用指南
dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
但是这样做我从dlltool得到"invalid bfd target"
错误
谢谢!
更新:我相信可以这样做,因为Enthought python包含这样的文件。我想为不包含它的更常见的发行版创建一个。
答案 0 :(得分:1)
问题是您使用的是32位dlltool。可能在C:\ MinGW \ bin而不是C:\ MinGW64 \ bin。您可以更改路径,或者专门运行64位工具:
C:\MinGW64\bin\dlltool -v --dllname python27.dll --def python27.def --output-lib libpython27.a
答案 1 :(得分:0)
我不确定您是否对此有所帮助,但在您链接到的页面底部有一个指向here的链接 - 其中包含:
请勿使用MinGW-w64。正如您将注意到的,MinGW导入库 AMD64版本中省略了Python(例如libpython27.a) 蟒蛇。这是故意的。 请勿尝试使用dlltool创建一个。 目前还没有正式的MinGW-w64版本,它仍处于“测试版”状态 被认为是不稳定的,尽管你可以从例如64位构建 TDM-GCC。 mingw运行时也存在问题 与MSVC运行时冲突;这可能发生在你的地方 不要指望,例如g ++或gfortran的运行时库内部。至 保持安全,暂时避开MinGW-w64。