当前位置: 首页 > news >正文

科网站建设无锡网站制作建设

科网站建设,无锡网站制作建设,哪个网站代做装修效果图,重庆实惠网站建设环境#xff1a; phyton版本#xff1a;3.10 VS版本#xff1a;VS2017 包含文件头#xff1a;Python\Python310\include 包含库文件#xff1a;Python\Python310\libs 程序运行期间#xff0c;以下函数只需要调用一次即可#xff0c;重复调用会导致崩溃 void Initial…环境 phyton版本3.10 VS版本VS2017 包含文件头Python\Python310\include 包含库文件Python\Python310\libs 程序运行期间以下函数只需要调用一次即可重复调用会导致崩溃 void Initialize(); void Finalize(); “C_Test.py”需要拷贝程序运行所有的目录。 下载https://download.csdn.net/download/luo_sen/88094131 PythonHelper.h #pragma once #includestring using namespace std; /* phyton版本3.10 包含文件头Python\Python310\include 包含库文件Python\Python310\libs */ // https://docs.python.org/3/c-api/arg.html /* b (int) [unsigned char] Convert a nonnegative Python integer to an unsigned tiny int, stored in a C unsigned char.B (int) [unsigned char] Convert a Python integer to a tiny int without overflow checking, stored in a C unsigned char.h (int) [short int] Convert a Python integer to a C short int.H (int) [unsigned short int] Convert a Python integer to a C unsigned short int, without overflow checking.i (int) [int] Convert a Python integer to a plain C int.I (int) [unsigned int] Convert a Python integer to a C unsigned int, without overflow checking.l (int) [long int] Convert a Python integer to a C long int.k (int) [unsigned long] Convert a Python integer to a C unsigned long without overflow checking.L (int) [long long] Convert a Python integer to a C long long.K (int) [unsigned long long] Convert a Python integer to a C unsigned long long without overflow checking.n (int) [Py_ssize_t] Convert a Python integer to a C Py_ssize_t.c (bytes or bytearray of length 1) [char] Convert a Python byte, represented as a bytes or bytearray object of length 1, to a C char.Changed in version 3.3: Allow bytearray objects.C (str of length 1) [int] Convert a Python character, represented as a str object of length 1, to a C int.f (float) [float] Convert a Python floating point number to a C float.d (float) [double] Convert a Python floating point number to a C double.D (complex) [Py_complex] Convert a Python complex number to a C Py_complex structure. */#define PYTHON_FILE_NAME _T(C_Test)extern C { #include Python.h }class CPythonHelper {public:void Initialize();void Finalize();PyObject* GetPyFunc(CString strModuleName, CString strFuncName); PyObject* RunPyFunc(CString strModuleName, CString strFuncName, PyObject *pArgs);int PyTupleSetItem(PyObject *, Py_ssize_t, PyObject *);CString PyObjectToCString(PyObject *pPyObj);int PyObjectToInt(PyObject *pPyObj);double PyObjectToFloat(PyObject *pPyObj);int PyObjectToFloatArray(PyObject *pPyObj, CArraydouble, double szData);PyObject* IntToPyObject(int data);PyObject* FloatToPyObject(double data);PyObject* CStringToPyObject(CString data);PyObject* FloatArrayToPyObject(CArraydouble, double szData);PyObject* CreateArgs(int size);protected:string UTF8_To_string(const std::string str);string string_To_UTF8(const std::string str);string CStringToPyString(CString text);PyObject* GetPyFunc(char* pModuleName, char* pFuncName);PyObject* RunPyFunc(char* pModuleName, char* pFuncName, PyObject *pArgs);}; PythonHelper.cpp #include pch.h #include PythonHelper.hstd::string CPythonHelper::UTF8_To_string(const std::string str) {int nwLen MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf new wchar_t[nwLen 1];//一定要加1不然会出现尾巴 memset(pwBuf, 0, nwLen * 2 2);MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf new char[nLen 1];memset(pBuf, 0, nLen 1);WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr pBuf;delete[]pBuf;delete[]pwBuf;pBuf NULL;pwBuf NULL;return retStr; } std::string CPythonHelper::string_To_UTF8(const std::string str) {int nwLen ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);wchar_t * pwBuf new wchar_t[nwLen 1];//一定要加1不然会出现尾巴 ZeroMemory(pwBuf, nwLen * 2 2);::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);int nLen ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);char * pBuf new char[nLen 1];ZeroMemory(pBuf, nLen 1);::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);std::string retStr(pBuf);delete[]pwBuf;delete[]pBuf;pwBuf NULL;pBuf NULL;return retStr; }string CPythonHelper::CStringToPyString(CString text) {string tt CT2A(text);string strUTF8 string_To_UTF8(tt);return strUTF8; }CString CPythonHelper::PyObjectToCString(PyObject *pPyObj) {PyObject* str PyUnicode_AsEncodedString(pPyObj, utf-8, Error);char *result (PyBytes_AsString(str));string temp UTF8_To_string(result);CString strResult CString(temp.c_str());return strResult; } int CPythonHelper::PyObjectToInt(PyObject *pPyObj) {int data 0;PyArg_Parse(pPyObj, i, data);return data; } double CPythonHelper::PyObjectToFloat(PyObject *pPyObj) {double data 0;PyArg_Parse(pPyObj, d, data);return data; }int CPythonHelper::PyObjectToFloatArray(PyObject *pPyObj, CArraydouble, double szData) {szData.RemoveAll();int SizeOfList PyList_Size(pPyObj);for (int i 0; i SizeOfList; i){PyObject *Item PyList_GetItem(pPyObj, i);double result0;PyArg_Parse(Item, d, result);szData.Add(result);}return SizeOfList;}void CPythonHelper::Initialize() {if (!Py_IsInitialized()){Py_Initialize();}}void CPythonHelper::Finalize() {if (Py_IsInitialized()){Py_Finalize();}} PyObject* CPythonHelper::GetPyFunc(CString strModuleName, CString strFuncName) {string pModuleName CStringToPyString(strModuleName);string pFuncName CStringToPyString(strFuncName);return GetPyFunc((char*)pModuleName.c_str(), (char*)pFuncName.c_str());}PyObject* CPythonHelper::GetPyFunc(char* pModuleName, char* pFuncName) {PyObject *pModule PyImport_ImportModule(pModuleName);PyObject *pFunc PyObject_GetAttrString(pModule, pFuncName);//Py_CLEAR(pModule);return pFunc; }PyObject * CPythonHelper::RunPyFunc(char* pModuleName, char* pFuncName, PyObject *pArgs) {PyObject *pFunc GetPyFunc(pModuleName, pFuncName);PyObject *pRetrun PyObject_CallObject(pFunc, pArgs); //Py_CLEAR(pFunc);return pRetrun; } PyObject * CPythonHelper::RunPyFunc(CString strModuleName, CString strFuncName, PyObject *pArgs) {string pModuleName CStringToPyString(strModuleName);string pFuncName CStringToPyString(strFuncName);PyObject *pRetrun RunPyFunc((char*)pModuleName.c_str(), (char*)pFuncName.c_str(), pArgs); return pRetrun; } int CPythonHelper::PyTupleSetItem(PyObject * pObject, Py_ssize_t index, PyObject * pData) {return PyTuple_SetItem(pObject, index, pData); }PyObject* CPythonHelper::IntToPyObject(int data) {return Py_BuildValue(i, data); } PyObject* CPythonHelper::FloatToPyObject(double data) {return Py_BuildValue(d, data); }PyObject* CPythonHelper::FloatArrayToPyObject(CArraydouble, double szData) {int nSize szData.GetSize();PyObject *PyList PyList_New(nSize);for (int i 0; i PyList_Size(PyList); i){PyList_SetItem(PyList, i, PyFloat_FromDouble(szData[i]));}return PyList; } PyObject* CPythonHelper::CStringToPyObject(CString data) {return Py_BuildValue(s, (CStringToPyString(data).c_str())); }PyObject* CPythonHelper::CreateArgs(int size) {return PyTuple_New(size); } C_Test.py def Hello():print(hello Python)def Add(a,b):import numpy as npprint(np.pi)return abdef GetText(msg):print(msg)return msg; 程序调用示例-整数一 CPythonHelper PY;PY.Initialize();int a 10;int b 20;int sum 0; //参数设置PyObject *pArgs PyTuple_New(2);PY.PyTupleSetItem(pArgs, 0,Py_BuildValue(i, a));PY.PyTupleSetItem(pArgs, 1, Py_BuildValue(i, b));//调用函数PyObject *pRetrun PY.RunPyFunc(PYTHON_FILE_NAME, _T(Add), pArgs);//返回值转换PyArg_Parse(pRetrun, i, sum);//输出CString strResult _T();strResult.Format(_T(%d%d%d), a, b, sum);AfxMessageBox(strResult);PY.Finalize();程序调用示例-字符串二 CPythonHelper PY;PY.Initialize();CString strText _T(ABC中国人123);//参数设置PyObject *pArgs PyTuple_New(1);PY.PyTupleSetItem(pArgs, 0, Py_BuildValue(s, PY.CStringToPyString(strText).c_str()));//调用函数PyObject *pRetrun PY.RunPyFunc(PYTHON_FILE_NAME, _T(GetText), pArgs);//返回值转换CString strResult PY.PyObjectToCString(pRetrun);//输出AfxMessageBox(strResult);PY.Finalize(); 程序调用示例-数组三 CPythonHelper PY;PY.Initialize();CString strText _T(ABC中国人123);//参数设置PyObject *pArgs PY.CreateArgs(1);PyObject* pObject PY.CStringToPyObject(strText);CArraydouble, double szData;szData.Add(1.0);szData.Add(1.1);szData.Add(2);PyObject *PyList PY.FloatArrayToPyObject(szData);PY.PyTupleSetItem(pArgs, 0, PyList);//调用函数PyObject *pReturn PY.RunPyFunc(PYTHON_FILE_NAME, _T(SetVaule), pArgs);//返回值转换PY.PyObjectToFloatArray(pReturn, szData);PY.Finalize();
http://www.dnsts.com.cn/news/78672.html

相关文章:

  • 高效网站推广设计网站经营模式
  • 网站建设专业性的评估天津怎样做网站推广
  • 靖江网站建设制作wordpress中view不见了
  • 南昌成都网站建设方案wordpress 购物模板下载
  • 做数据结构基础的网站曲阳网站制作公司
  • 石家庄自助建站软件在手机上怎么做微电影网站
  • 找室内效果图的网站汕头网站建设过程
  • 外贸建站服务柳州城乡建设部网站首页
  • 天河网站开发有区域名和主机怎么做网站
  • 毕设网站开发需要做什么移动开发者
  • 网站建设初步规划书贵州省城乡建设局网站查
  • 在相亲网站做红娘株洲建设局网站
  • 游戏公司招聘网站数据库中修改wordpress中默认网址
  • 奥派电子商务网站建设论文做网站 一级 二级
  • 毕业设计博客网站开发平顶山哪里有做网站的公司
  • 酷炫的网站招聘网站怎么做效果好
  • 大连做公司网站建立网站需要多少钱费用
  • 网站群建设论文wordpress 视频存储
  • 帝国cms做微网站山西城乡建设部网站首页
  • 移动网站推广如何优化网站制作哪里做得好
  • 做境外碎片化旅游的网站h5网站开发软件下载
  • 华为云建站官网网站建设人员需求
  • 网站备案注销怎么恢复汽车业务网站开发公司
  • 湛江网站制作微信网站制作公司哪家好
  • 安溪住房和城乡规划建设局网站彩票走势图网站建设
  • seo华为网站诊断报告手机门户网站
  • 南通企业建设网站电话网站建设收费明细表
  • 学做吃的的网站安卓手机怎么做网站
  • 会计公司网站模板天津专门做网站的公司的电话
  • 青岛网站维护公司wordpress文章页面图片自动适应