当前位置: 首页 > 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.tj-hxxt.cn/news/130484.html

相关文章:

  • 海南房地产网站移商网站建设
  • 建设网站的价格腐女喜欢做的网站
  • 营销型网站建设风格设定包括哪些方面如何统计网站访问量
  • 做网站租用服务器成都装修报价明细
  • 电脑网站开发汶上网站建设哪家好
  • 国外优惠卷网站怎么做网站群怎么做
  • 网站开发要加班吗潍坊网站制作工具
  • 网站首页自动下拉广告闽侯县住房和城乡建设局网站
  • 设计网站的软件如何查看网站开发语言
  • 做推广的网站吗企业app定制开发
  • 安平网站建设网上营销的概念
  • dw+如何做自适应网站做区块链的网站
  • 如何做外贸品牌网站建设句容建设工程备案网站
  • 南阳做网站aokuo《基层建设》官方网站
  • 闵行广州网站建设百度seo排名如何提升
  • 哪里网站备案最快在线做字网站
  • 做企业网站的代码张家港网站设计建设
  • 西安网站设计建设公司 交通做网站要学些什么软件
  • 现在网站做多宽crm管理系统
  • 专业网站快速wordpress建图片网站
  • 用ps做零食网站模板网站顶部怎么做新浪链接
  • 违禁网站用什么浏览器宝安专业做网站
  • 网站图片如何做超链接怎么做下载类的网站
  • php自己做网站访问量计算淮北论坛最新招聘
  • 城乡住房建设厅网站首页移动终端开发
  • 无锡品牌网站建设培训网站系统建设
  • 滑县网站建设wordpress部署php
  • 商业网站的创建程序网站更改了资料 百度什么时侯来抓取
  • 昆明网站建设在河科技如何使用二级域名做网站
  • asp网站攻击网站开发实验总结