python 示例写法 和调c动态库一样
通过回调函数方式 将python函数注册到c++ 动态库中
from ctypes import *def DllCall(nParam, nFlag):print(nParam, nFlag)z2 = 0.6z3 = 0.4z4 = 0.0z5 = 0.3z6 = 0.5z7 = 0.8z8 = 0.3z9 = 0.9strData = str(z2) + ' ' + str(z3) + ' ' + str(z4) + ' ' + str(z5) + ' ' + str(z6) + ' ' + str(z7) \+ ' ' + str(z8) + ' ' + str(z9)return strData.encode() dll = CDLL('./HLACCallDlg170.dll',winmode=0)
callbackFunc = CFUNCTYPE(c_char_p, c_int, c_int)(DllCall)
dll.HLACDialogRegisterCallBack(callbackFunc)
生成动态库
//头文件
#pragma once#include "HLACCallDlg.h"
#include <QApplication>#ifdef __cplusplus
extern "C" {
#endifHLAC_CALL_DLG_EXPORT int HLACDialogRegisterCallBack(CallBackFunc pFunc);#ifdef __cplusplus
}
#endif//.cpp 文件
#include "../Include/HLACCall.h"int HLACDialogRegisterCallBack(CallBackFunc pFunc)
{int nArgc = 0;char** pArgv = NULL;QApplication a(nArgc, pArgv);CHLACCallDlg dlg;dlg.RegisterCallBack(pFunc);dlg.show();return a.exec();
}
配置重点
网上是说 需要配置QT_PLUGIN_PATH 环境变量
坑点:
网上方法是配置此环境变量,但配置后会导致其他软件找不到正确的插件位置
建议使用下面的方法设置临时环境变量
import osos.environ['QT_PLUGIN_PATH']= 'E:\\SoftWare\\Qt\\5.14.2\\msvc2017\\plugins'
否则python 无法调起qt插件
这样就调起来啦!!!!!!!