欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

undefined reference to `_imp___Py_NoneStruct'

发布时间:2025/4/16 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 undefined reference to `_imp___Py_NoneStruct' 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

http://www.ithao123.cn/content-5989645.html


最近在捣腾Python,主要是因为Google App Engine比较诱人。
用官方的SDK,一开始装的是2.6,然后每次都会有很多提示deprecated,发现2.6对2.5的更新比较大,而且貌似在我机器上记不住用户名和密码。由于本人密码有点复杂,于是就去找了个2.5来装。
CPython官方的已经没有提供直接渠道来下载2.5的MSI文件了(2010.10.31更新,官方可以下载到2.5.4版本,http://www.python.org/download/releases/2.5.4/),于是用了ActivePython,但接下来按网上的教程(这篇和这篇)安装时每次编译都报错。
教程的步骤是
1、先安装MinGW,注意把安装目录的bin目录加入到系统的path常量中
2、再去下载安装openssl和libgw32c并解压到MinGW的文件夹里
3、下载Python 2.5的SSL模块的源代码。把setup.py里第152行的地址从C:GnuWin32改为你安装MinGW的地址
4、如果机器上同时安装有Visual Studio 2003,可能需要强制使用MinGW编译。在Python安装文件夹的Libdistutils目录里新建一个文件distutils.cfg,在里面填入

[build] compiler=mingw32
或者在下一步启动编译时传入一个
-c mingw32参数强制指定MinGW
5、运行setup.py install即可,有上一步的强制则是setup.py install -c mingw32

但我始终在最后一步的编译过程中报错,提示很多类似undefined reference to `_imp___Py_NoneStruct'的错误。Google搜索后发现原来是ActivePython自带的文件有问题(链接),本来应该有的libpython25.a不存在了,还好有教程可以自己重新生成一个。
1、找到python25.dll(一般是在system32文件夹里)
2、列出函数导出表,建议用pexport(链接1,链接2)
3、运行pexports.exe python25.dll > python25.def
4、运行dlltool --dllname python25.dll --def python 25.def --output-lib libpython25.a生成文件
5、最后复制到Python的libs文件夹里即可

再重新setup.py install即可成功安装
在Python中import ssl一下看看是不是没报错了~~

总结

以上是生活随笔为你收集整理的undefined reference to `_imp___Py_NoneStruct'的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。