Python嵌入的C代码编译错误

Python embedded C code compilation error

本文关键字:代码 编译 错误 Python      更新时间:2023-10-16

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

在没有更改任何代码的情况下,在安装G++和Python后,我发现我用来编译代码的东西返回了一个错误:

    g++ -std=c++11 -shared -IC:Python27include -LC:Python27libs ScreenShots/PictureStr.cpp -lpython27 -ld3d9 -lole32 -o ScreenShots/PictureStr.pyd

返回这个:

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

(移除-ld3d9-lole32不会改变任何东西)

我不知道为什么会发生这种情况(在我尝试过的任何其他电脑或我的旧电脑上都没有发生),我也找不到任何可能导致这种情况的原因。

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

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

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

"我找到了解决办法,"我大声回答。

我试着将libpython27.a从我的旧电脑复制到我的新电脑,并再次尝试使用gcc,结果成功了,新的64位python 2.7安装libpython27.a似乎坏了。如果其他人遇到这个问题,请尝试重新创建您的libpython27.a文件。

要重新创建libpython.a运行:

pexports "C:WindowsSysWOW64python27.dll" > "C:Python27libspython27.def"
dlltool --dllname "C:WindowsSysWOW64python27.dll" --def "C:Python27libspython27.def" --output-lib "C:Python27libslibpython27.a"

其中C:Python27是您的python文件夹,如果是32位计算机,则应该是System32而不是SysWOW64。

要安装pexports,请安装mingw并运行mingw-get-install-pexports。