Python嵌入式C代码编译错误

时间:2015-11-29 14:42:12

标签: python c++ gcc

我最近买了一台新电脑,并试图将一个python项目从我的旧电脑移到我的新电脑上。 python项目使用了一些directx9 C ++代码(使用#include< Python.h>)来截取屏幕截图并编译我使用G ++的这个C ++文件。

在不更改任何代码的情况下,在安装G ++和Python之后,我发现我用来编译代码时返回错误:

    g++ -std=c++11 -shared -IC:\Python27\include -LC:\Python27\libs ScreenShots/PictureStr.cpp -lpython27 -ld3d9 -lole32 -o ScreenShots/PictureStr.pyd

返回:

    C:\Python27\libs/libpython27.a: error adding symbols: File format not recognized
    collect2.exe: error: ld returned 1 exit status

(删除-ld3d9 -lole32不会改变任何内容)

我不知道为什么会发生这种情况(并且在我尝试过的任何其他计算机或我的旧计算机上都没有发生)并且我无法找到任何可能导致这种情况发生的事情。

如果这是相关的,我使用Windows 10 64bit(在我的旧电脑和新电脑中)。

也许我需要重新编译python库或那个特定文件,所以对于如何做到这一点的任何建议也非常感谢。

感谢您阅读本文,欢迎任何建议。

我找到了解决办法,我回答道。

1 个答案:

答案 0 :(得分:6)

我尝试将旧计算机中的libpython27.a应用到我的新计算机并尝试再次使用gcc并且它工作正常,似乎新的64位python 2.7安装libpython27.a已损坏。如果其他人遇到此问题,请尝试重新创建libpython27.a文件。

重新创建libpython.a run:

pexports "C:\Windows\SysWOW64\python27.dll" > "C:\Python27\libs\python27.def"
dlltool --dllname "C:\Windows\SysWOW64\python27.dll" --def "C:\Python27\libs\python27.def" --output-lib "C:\Python27\libs\libpython27.a"

C:\Python27\是你的python文件夹,如果它是32位计算机,应该是System32而不是SysWOW64。

安装pexports install mingw并运行mingw-get install pexports。