• 欢迎访问,如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Python与C++生成的dll通信问题

C++语言 码拜 3年前 (2017-04-25) 361次浏览
做Web开发,用到了flask框架,后台用的语言是Python,核心算法采用C++,C++已经封装好双向的接口,输入已经成功被Python代码接收,输出封装的是一个char * 类型的字符串返回值(这一部分有问题)。下面是python的代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ctypes
from ctypes import *
def PlateRecognize(Url):
Objdll = ctypes.windll.LoadLibrary(“E:/PlateRecognizeDLL/x64/Debug/plateRecognizeDll.dll”)
#Objdll.plateRecognize1.restype = c_char_p
Url1 = Url.strip()
result = Objdll.plateRecognize1(Url1)
print result
return result
得到的result值是一个int类型的值,而不是本人所需要的字符串,问一下问题出在什么地方,怎么样修改才能得到字符串
解决方案

40

说在前面,建议还是去看看Extending Python with C or C++
直接把dll,so封装成PYTHON无缝识别的代码用起来最方便,代码管理上也清晰。
再或还有boost.python或SWIG 来自动生成接口也是不错的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
使用ctypes模块,传入参数需要包装成C类型,如下图。
返回值需要使用ret.value来访问python基本类型。
Python与C++生成的dll通信问题
要想理解使用,还是需要看文档https://docs.python.org/2.7/library/ctypes.html

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Python与C++生成的dll通信问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)