[求助帖] python 使用 ctypes 调用第三方DLL 报错
使用 from ctypes import * 引入后,使用如下代码:
class YB_Neusoft():
def __init__(self, czybh, ywbh, hospitalcode, jyrc, returntype):
self.RETURNTYPE = returntype # 返回类型
self.YWBH = ywbh # 业务编号
self.HOSPITALCODE = hospitalcode # 医院编码
self.CZYBH = czybh # 操作员编号
self.YWZQH = '' # 业务周期号
self.YYJYLSH = datetime.datetime.now().strftime('%Y%m%d%H%M%S') + '-' + self.HOSPITALCODE + '-' + "".join(random.sample(string.digits, k=4)) # 医院交易流水号 时间(14)+医院编号(8)+流水号(4)
self.ZXBM = '0000' # 中心编码
self.JYRC=jyrc # 交易入参
self.LJBZ = '1' # 联机标志
self.DLL = cdll.LoadLibrary('C:/CRM-Manage-master/YBDLL/abcdefg.dll')
def _NeusoftGetYWZQH(self):
# 执行初始化 并进行签到
initretrun = create_string_buffer(2000)
Double = self.DLL.INIT(initretrun) # 加载函数对象
# print('初始化执行结果:' + str(Double))
# print('初始化执行返回:' + str(initretrun, encoding="utf8"))
businessoutputData = create_string_buffer(2000) # 保存接口出参
BusinessString = '9100' + '^' + self.HOSPITALCODE + '^' + self.CZYBH + '^^' + self.YYJYLSH + '^'+self.ZXBM +'^^'+self.LJBZ+'^'
print(BusinessString)
result = self.DLL.BUSINESS_HANDLE(BusinessString.encode('utf8'),businessoutputData)
# print('签到执行结果:'+str(result))
# print('签到执行出参:'+str(businessoutputData, encoding="utf8"))
sss = str(businessoutputData, encoding="utf8").split('^')
return sss[2].replace('|', '')
在pycharm 中调试运行没有任何错误。但是将项目部署到 Apache24 中时,执行这一段代码会报错。
self.YWZQH = self._NeusoftGetYWZQH() , referer: http://193.168.4.48:7888/index/ybbusiness/YbFeeCheckList File "C:\CRM-Manage-master\web\Common\Nesuftbusiness.py", line 41, in _NeusoftGetYWZQH\r, referer: http://193.168.4.48:7888/index/ybbusiness/YbFeeCheckList result = self.DLL.BUSINESS_HANDLE(BusinessString.encode('gbk'), businessoutputData)\r, referer: http://193.168.4.48:7888/index/ybbusiness/YbFeeCheckList OSError: exception: stack overflow\r, referer: http://193.168.4.48:7888/index/ybbusiness/YbFeeCheckList
想看看有没有人知道为什么?
``
评论 2
求各位大神解答
windows 下 不用 Apache 部署了, 改用IIS 问题解决了