#包含?& ltPython.h & gt
使用?名稱空間?std
虛空?hello world();
虛空?add();
虛空?TestTransferDict();
虛空?test class();
int?主()
{
cout?& lt& lt?“首發?測試。。。”?& lt& lt?endl
cout?& lt& lt?“hello world()-“?& lt& lt?endl
hello world();
cout?& lt& lt?“Add()-“?& lt& lt?endl
add();
cout?& lt& lt?TestDict -?& lt& lt?endl
TestTransferDict();
cout?& lt& lt?測試類-?& lt& lt?endl
test class();
系統(“暫停”);
回歸?0;
}
//調用輸出“Hello?“世界”功能
虛空?HelloWorld()
{
py _ Initialize();//在使用python之前,調用Py _ Initialize();該函數被初始化。
對象?*?pModule?=?NULL//聲明變量
對象?*?pFunc?=?NULL//聲明變量
pModule?= py import _ import module(“test 001“);//下面是要調用的Python文件名。
pFunc=?py object _ GetAttrString(p module,“hello world”);?//這裏是要調用的函數的名稱。
pye val _ call object(p func,?NULL);?//調用函數,NULL表示參數為空。
py _ Finalize();//調用Py_Finalize,對應Py_Initialize。
}
//調用Add函數並傳遞兩個int參數。
虛空?添加()
{
py _ Initialize();
對象?*?pModule?=?NULL
對象?*?pFunc?=?NULL
pModule?= py import _ import module(“test 001“);//Test001:Python文件名
pFunc=?py object _ GetAttrString(p module,“添加”);//add:Python文件中的函數名。
//創建參數:
對象?*包裝?=?PyTuple _ New(2);?//函數調用的參數傳遞都以元組的形式打包,2表示參數個數。
py tuple _ SetItem(pArgs,?0,?py _ build value(“I“,?5));//0-序列號I表示創建壹個int變量。
py tuple _ SetItem(pArgs,?1,?py _ build value(“I“,?7));//1-序列號
//返回值
對象?*預轉向?=?NULL
預轉?=?pye val _ call object(p func,?pArgs);//調用函數
//將返回值轉換為int類型。
int?結果;
PyArg _ Parse(pReturn,?“我”,?& amp結果);//i表示轉換為int變量。
cout?& lt& lt?"5+7?=?"?& lt& lt?結果?& lt& lt?endl
py _ Finalize();
}
//傳遞的參數類型是dictionary。
虛空?TestTransferDict()
{
py _ Initialize();
對象?*?pModule?=?NULL
對象?*?pFunc?=?NULL
pModule?= py import _ import module(“test 001“);//Test001:Python文件名
pFunc=?py object _ GetAttrString(p module,“TestDict“);?//add:Python文件中的函數名。
//創建參數:
對象?*包裝?=?PyTuple _ New(1);?
對象?*pDict?=?PyDict _ New();?//創建字典類型變量
PyDict _ SetItemString(pDict,?“姓名”,?py _ build value(“s“,?“王耀”));?//用數據填充字典類型變量
PyDict _ SetItemString(pDict,?“年齡”,?py _ build value(“I“,?25));?//用數據填充字典類型變量
py tuple _ SetItem(pArgs,?0,?pDict);//0-序列號將字典類型變量添加到參數元組中。
//返回值
對象?*預轉向?=?NULL
預轉?=?pye val _ call object(p func,?pArgs);//調用函數
//處理返回值:
int?尺寸?=?PyDict _ Size(pReturn);
cout?& lt& lt?“返回的詞典大小為:?“?& lt& lt?尺寸?& lt& lt?endl
對象?*pNewAge?=?PyDict _ GetItemString(pReturn,?“年齡”);
int?新時代;
PyArg _ Parse(pNewAge,?“我”,?& ampnew age);
cout?& lt& lt?“真的嗎?年齡:?”?& lt& lt?新時代?& lt& lt?endl
py _ Finalize();
}
//測試類
虛空?測試類()
{
py _ Initialize();
對象?*?pModule?=?NULL
對象?*?pFunc?=?NULL
pModule?= py import _ import module(“test 001“);//Test001:Python文件名
pFunc=?py object _ GetAttrString(p module,“TestDict“);?//add:Python文件中的函數名。
//獲取Person類
對象?*pClassPerson?=?py object _ GetAttrString(p module,“人”);
//創建Person類的實例。
對象?*pInstancePerson?=?py instance _ New(pclasssperson,?NULL,?NULL);
//調用方法
py object _ call method(pInstancePerson,?“問候”,?“s”,?“餵?kitty“);?//s表示傳遞了壹個字符串,值為“Hello?小貓“
py _ Finalize();
}#test.py
def?HelloWorld():
打印?“餵?世界“
def?添加(a,?b):
回歸?a+b
def?測試字典(字典):
打印?詞典
dict【“年齡”】?=?17
回歸?詞典
上課?人:
def?問候自己greetStr):
打印?greetStr
#打印?加法(5,7)
#a?=?raw _ input(“Enter?去哪?繼續……”結果:
配置:
註意兩點:
如果編譯調試版本,請復制C:/Python26/libs下的python26.lib並將其重命名為Python26 _ d.lib。
記得把項目的當前目錄。
測試通過了?