2010-08-17 155 views
1

我在使用英特爾編譯器(11.1)構建ctypes工作版本時遇到了問題。麻煩的是,當與ctypes模塊接口連接時,ctypes模塊下的libffi不能正常工作。 OpenGL的。英特爾編譯器和Python/ctypes/libffi

本來libffi使用英特爾編譯器爲__int128_t沒有編譯沒有定義的,我身邊跟着的是已經上市的幾個地方,工作就是通過定義一個新的類型:

typedef struct { int64_t m[2]; } __int128_t;

這遵循響應英特爾給出:http://software.intel.com/en-us/forums/showthread.php?t=56652

補丁然後提示是這樣的:

typedef struct { int64_t m[2]; } __int128_t; 
//and then change where the uint64_t is assigned to this to be: 
sse[x].m[0] = *(uint64_t*) v; 
sse[x].m[1] = 0; 
//and where the uint32_t is assigned to: 
sse[x].m[0] = *(uint32_t*) v; 
sse[x].m[1] = 0; 

應用該補丁,編譯東西,並且​​可用於導入,但是,當與OpenGL交互時,事情不起作用。運行PyQt的示例程序hellogl.py會導致空白視圖。

有沒有更好的工作方式呢?

丹;

+0

它已被討論爲一個Python bug:http://bugs.python.org/issue4130 – Dan 2010-08-17 08:35:23

+0

也可以說,編譯Python(和libffi)與GCC的作品 - 但我對全英特爾解決方案感興趣。在最糟糕的情況下,我會求助於libffi進行GCC編譯。 – Dan 2010-08-17 08:37:58

回答

3

我是libffi的作者。我建議發送一個註釋到[email protected],其中包含所有這些細節。我還建議在構建libffi的intel編譯器上運行libffi測試套件。確保將結果發送到[email protected],我們可以幫助解決問題。

+0

嗨安東尼 - 我剛剛看到你的回覆。我們已經不再使用英特爾編譯器(出於其他原因),但感謝您的提供。如果我們再次使用英特爾編譯器,那麼我們編譯的Python版本可能會發生變化(以及其他許多事情) - 如果沒有問題,我們可以從中取出。 – Dan 2011-02-23 22:17:38

+0

我正在接受您的答案,但:) – Dan 2011-02-23 22:18:31