qt是乙個跨平台的c++圖形使用者介面應用程式框架,而python是一門非常強大的程式語言,本文主要介紹了如何在osx系統下qt呼叫python指令碼。
先上**:
#include
//包含呼叫python相應的標頭檔案
#include
int main(int argc, char *ar**)
//初始化python直譯器,這是呼叫操作的第一步
py_initialize();
if( !py_isinitialized() ){
return -1;
//執行單句python語句,用於給出呼叫模組的路徑,否則將無法找到相應的呼叫模組
pyrun_******string("import sys");
//獲取qt_python_fun.py模組的指標
pyobject* pmodule = pyimport_importmodule("qt_python_fun");
if (! pmodule){
printf("can't open python file\n");
return -1;
//獲取hello函式的指標
pyobject* pfunhello = pyobject_getattrstring(pmodule,"hello");
if (!pfunhello){
printf("get function hello failed\n");
return -1;
//呼叫函式,傳入引數為null
pyobject_callfunction(pfunhello,null);
//銷毀python直譯器,這是呼叫的最後一步
py_finalize();
return a.exec();
之後我們新建乙個名為qt_python_fun.py的python檔案
寫入以下**:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def hello():
print "hello"
此時我們的**依舊無法執行,因為在c++中呼叫python在編譯時需要新增相關的路徑,在osx系統中,我們需要在字尾為.pro的檔案中加入以下**:
includepath += -i /system/library/frameworks/python.framework/versions/2.7/headers
libs += -l /system/library/frameworks/python.framework/versions/2.7/include/python2.7 -lpython2.7
這時,我們的程式才正真可以執行
以上只是最簡單的呼叫,關於c/c++ 和python之間的互相呼叫網上可以搜尋到大量的資源以供學習。值得注意的是路徑的新增,qt是跨平台的圖形使用者介面應用程式,python在linux,osx,windows下的路徑均有不同,而往往就是路徑錯誤使得程式無法正常執行
linux 下呼叫python檔案
在linux下直接呼叫python 檔案的方法 在裝有python環境的系統下執行 python 檔名.py 利用shell檔案呼叫python的方法 step01 建立python指令碼,例如 pythontest.r step02 建立shell指令碼,例如 runpythontest.sh,內...
XP下呼叫RPC失敗
解決xp下執行rpc顯示 拒絕訪問 的問題 採用rpc通訊的服務程式,在win2000和win2003下都執行正常,但在xp下執行失敗,錯誤提示是 拒絕訪問 怎麼解決呢?解決方法如下 單擊 開始 單擊 執行 鍵入 gpedit.msc 然後單擊 確定 開啟組策略。開啟組策略後,選擇 計算機配置 管理...
繼續談下呼叫約定
今天寫了個dll是用extern c 匯出的,以前一直用.def檔案,結果出現了以下錯誤 無法解析的外部符號 declspec dllimport int cdecl setstatus int imp setstatus yahh z 該符號在函式 public void thiscall cte...