低调大师

您现在的位置是: 首页 > PythonQt在Mac OS X - Yosemite成功编译运行

文章详情

PythonQt在Mac OS X - Yosemite成功编译运行

2015-1-25 21:22 307已围观 收藏 加入我们

        PythonQt实现了C++对象和Python脚本的双向调用,是实现Qt与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去下最新的版本,安装完毕。

        然后到http://www.qt-project.org下载Qt5.4的对应版本,安装完毕。

        现在,打开Qt Creator,载入PythonQt.pro项目,进行配置,选择Desktop XXX Clang_64,等待...

        结果等来了的是一大堆警告和几个莫名其妙的错误,反正就是不成功...

        开始折腾,卸载...安装...设置参数...环境变量...没有任何效果。        

        仔细分析了一下错误信息,发现里面都是报的“protected...”信息。然后,找到原始的Qt文件,把这些成员变量(函数)的前面都加上public:,再次编译,通过。

        如下所示:

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

        但是又出现新的类似错误,如法炮制。全部修改完后,再编译,通过,运行,通过,喔耶!!!

        因为之前同样的代码在Linux没有任何问题,基本搞清楚问题的原因所在:在gcc上没有检查对于protected的enum变量没有限制外部成员访问,而clang进行了严格的限制,导致编译不通过。

        现在,把Qt的代码的enum的成员需要外部访问的改为public修饰符,就全部OK了。但是因为改的是Qt的代码,需要备份起来,要不以后一更新,又会出问题了。

        对clang编译器(这个做正确了但是闯了祸的家伙!)进一步感兴趣的可以参考这里:http://www.tuicool.com/articles/u6jMb2N


文章转载至:https://my.oschina.net/u/2306127/blog/371605
收藏 (0)

文章评论

共有0条评论来说两句吧...