PythonQt在Mac OS X - Yosemite成功編譯運行

        PythonQt實現了C++對象和Python腳本的雙向調用,是實現Qt與Python互操做和嵌入式腳本的重要方式。python

        PythonQt的原始工程在:http://pythonqt.sourceforge.net/。這個項目來自於Mevis,一個功能強大的醫療圖像處理軟件。多是考慮到產品級軟件的穩定性,裏面用的是Qt4.6.2,python用的2.6。而如今最新的Qt主流版本是5.4,Python已是3.4.2了。下面咱們將在最新的Mac OS上進行這些最新版本的編譯,請扶好坐穩!!!函數

        Yosemite沒有Python3的缺省安裝,直接到www.python.org去下最新的版本,安裝完畢。ui

        而後到http://www.qt-project.org下載Qt5.4的對應版本,安裝完畢。spa

        如今,打開Qt Creator,載入PythonQt.pro項目,進行配置,選擇Desktop XXX Clang_64,等待....net

        結果等來了的是一大堆警告和幾個莫名其妙的錯誤,反正就是不成功...code

        開始折騰,卸載...安裝...設置參數...環境變量...沒有任何效果。        
對象

        仔細分析了一下錯誤信息,發現裏面都是報的「protected...」信息。而後,找到原始的Qt文件,把這些成員變量(函數)的前面都加上public:,再次編譯,經過。get

        以下所示:
編譯器

//Add "public" by openthings. This got error by PythonQt,change to public member.
public:
    enum Extension {
        UserExtension = 0x80000000
    };

        可是又出現新的相似錯誤,如法炮製。所有修改完後,再編譯,經過,運行,經過,喔耶!!!qt

        由於以前一樣的代碼在Linux沒有任何問題,基本搞清楚問題的緣由所在:在gcc上沒有檢查對於protected的enum變量沒有限制外部成員訪問,而clang進行了嚴格的限制,致使編譯不經過。

        如今,把Qt的代碼的enum的成員須要外部訪問的改成public修飾符,就所有OK了。可是由於改的是Qt的代碼,須要備份起來,要不之後一更新,又會出問題了。

        對clang編譯器(這個作正確了可是闖了禍的傢伙!)進一步感興趣的能夠參考這裏:http://www.tuicool.com/articles/u6jMb2N

相關文章
相關標籤/搜索