gpt4 book ai didi

python - 为 python 导出 c++ 函数,传递几个字符串作为参数

转载 作者:行者123 更新时间:2023-11-30 01:46:54 28 4
gpt4 key购买 nike

我正在尝试将一些 C++ 函数导出到 python 中,并且它在大多数情况下都运行良好,但是当函数在参数中使用的参数多于字符串时,我遇到了问题,第一个总是可以的,但是其他的总是胡言乱语。

C++代码:

#include <Python.h>

#include <iostream>

PyObject* wrap_one_string(PyObject *self, PyObject *args)
{
char* str;
if (!PyArg_ParseTuple(args,"s:wrap_one_string",&str))
{
return nullptr;
}
std::cout << str << std::endl;
return Py_None;
}

PyObject* wrap_two_string(PyObject *self, PyObject *args)
{
char* str1, str2;
if (!PyArg_ParseTuple(args,"ss:wrap_one_string", &str1, &str2))
{
return nullptr;
}
std::cout << str1 << std::endl << str2 << std::endl;
return Py_None;
}

static PyMethodDef exampleMethods[] = {
{ "one_string", wrap_one_string, METH_VARARGS, nullptr },
{ "two_string", wrap_two_string, METH_VARARGS, nullptr },
{ nullptr, nullptr, 0, nullptr}
};

extern "C"
{

__declspec(dllexport)
void initexample()
{
PyObject *m;
m = Py_InitModule("example", exampleMethods);
}

}

python 代码:

import example

example.one_string("ab")
example.two_string("abcd", "efgh")

结果是:

ab
abcd
È

第二个字符串参数总是一个奇怪的字符。知道这可能来自哪里吗?

谢谢

最佳答案

啊,没关系,我犯了一个愚蠢的错误

char* str1, str2;

应该是

char* str1, *str2;

太糟糕了,它编译了,虽然它确实给出了错误

str2 = PyString_AsString(PyTuple_GET_ITEM(args, 1))

访问第二个字符串。

关于python - 为 python 导出 c++ 函数,传递几个字符串作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32480852/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com