如何使用 Python 从预定义的 C++ 函数中获取变量的值?
Posted
技术标签:
【中文标题】如何使用 Python 从预定义的 C++ 函数中获取变量的值?【英文标题】:How to get value of the variable from predefined C++ function using Python? 【发布时间】:2019-04-26 05:58:15 【问题描述】:有没有办法使用 Python 从预定义的 C++ 函数中获取变量的值?我有 C++ 函数,它以 variant
类型作为参数。但是我们不能在python中定义variant
类型变量,对吧?我尝试过使用Boost.Python
、pybind11
。但是由于我无法编辑预定义的功能,所以无法实现它们。
编辑:
我有一个名为 bcap
的 C++ 函数,它接受 2 个参数并返回 2 个值。
# C++ code
# Takes these arguments
int32 func_id
variant[] vntArgs
---
# Returns these values
int32 HRESULT
variant vntRet
而variant[] vntArgs
有2种变量。
int16 vt
string value
我正在尝试使用这些参数调用此函数。
#python code
func_id = 3
vt = 8
value_1 = 'value: b-CAP'
value_2 = 'CaoProv.DENSO.VRC'
value_3 = 'localhost'
value_4 = ''
vntArgs = [vt, value_1, vt, value_2, vt, value_3, vt, value_4]
response = bcap(func_id, vntArgs)
#store the response in some variables
result1 = response.HRESULT
result2 = response.vntRet
问题是当我运行这个程序时,出现了这个错误。
AttributeError: 'int' object has no attribute 'vt'
我该怎么办?
提前致谢。
【问题讨论】:
具体来说,您的variant
类型是什么?
正如我在上面添加的,它是int16 and string
。
【参考方案1】:
您可以创建多个单独的重载,每个可能的变体组合一个。这行得通吗?
void actual_function(variant<int, double, string> v)
// stuff
void your_function(int i)
actual_function(i);
void your_function(double d)
actual_function(d);
void your_function(string const& s)
actual_function(s);
【讨论】:
它解决了问题还是缺少任何部分? 感谢您的快速回复。我编辑了原始帖子以使其更易于理解。你能再看看这个吗?谢谢。 你能发布实际的函数签名吗?以上是关于如何使用 Python 从预定义的 C++ 函数中获取变量的值?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ctypes 将数组从 C++ 函数返回到 Python
从 C++ 调用 python 函数时如何将 C++ 类作为参数传递?