Python嵌入式C代码编译错误

Ida*_*Dor 3 c++ python 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
Run Code Online (Sandbox Code Playgroud)

返回:

    C:\Python27\libs/libpython27.a: error adding symbols: File format not recognized
    collect2.exe: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

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

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

如果这是相关的,我使用Windows 10 64bit(在我的旧计算机和新计算机中).

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

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

我找到了一个解决方案,我回答道.

Ida*_*Dor 6

我尝试将libpython27.a从旧计算机上复制到我的新计算机并尝试再次使用gcc并且它有效,似乎新的64位python 2.7安装libpython27.a已损坏.如果其他人遇到此问题,请尝试重新创建libpython27.a文件.

要重新创建libpython.a运行:

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"
Run Code Online (Sandbox Code Playgroud)

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

要安装pexports install mingw并运行mingw-get install pexports.