2015-11-29 48 views
3

我最近買了一臺新電腦,並試圖從我的舊電腦移動一個Python項目到我的新電腦。 python項目使用了一些directx9 C++代碼(使用#include < Python.h >)來截取屏幕截圖並編譯我使用G ++的這個C++文件。Python嵌入的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不會改變任何東西)

我不知道爲什麼會發生這種情況(並且不會發生在我試過的任何其他計算機或我的舊電腦上),而且我無法啓動nd任何可能導致這一點的事情。

如果這是相關的我使用Windows 10 64位(在我的舊電腦和我的新電腦)。

也許我需要重新編譯python庫或那個特定的文件,所以任何關於如何做的建議也非常感謝。

感謝您閱讀本文,歡迎提供任何建議。

我找到了解決方案,我回答了下面的問題。

回答

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" 

哪裏C:\Python27\是你的Python文件夾,應該是System32下,而不是SysWOW64中,如果它是一個32位的計算機。

安裝pexports安裝mingw並運行mingw-get install pexports。

+0

這最終爲我工作,但要確保你的g ++和dlltool來自同一個工具鏈。即'哪個g ++'和'哪個dlltool'應該在同一個目錄中。 – user1495323