Netica与Python的集成

Netica与Python的集成,python,ctypes,Python,Ctypes,我想使用Python访问和使用Netica C API。虽然我可以使用ctypes Windell来加载Netica.dll库,但我在使用库函数时遇到了困难,因为(似乎)其中许多函数对某些输入和输出需要特殊的数据类型 我将Netica与Python集成的基点是此处提供的包装器: 此包装器使用ctypes加载到Netica.dll中,并提供函数来访问.dll中的函数 在上面提供的链接上,有一个使用包装器的示例。当我运行这个示例时,我得到一个“错误类型”错误(下面将更好地描述)。为了讨论,请考虑下面

我想使用Python访问和使用Netica C API。虽然我可以使用ctypes Windell来加载Netica.dll库,但我在使用库函数时遇到了困难,因为(似乎)其中许多函数对某些输入和输出需要特殊的数据类型

我将Netica与Python集成的基点是此处提供的包装器:

此包装器使用ctypes加载到Netica.dll中,并提供函数来访问.dll中的函数

在上面提供的链接上,有一个使用包装器的示例。当我运行这个示例时,我得到一个“错误类型”错误(下面将更好地描述)。为了讨论,请考虑下面的代码:

从ctypes导入*
netica=windell.LoadLibrary('netica.dll')
#创造网络环境
netica.newneticaenvironment\u ns.argtypes=[c\u char\u p,c\u void\u p,c\u char\u p]
netica.newneticaenvironment\u ns.restype=c\u void\u p
env=netica.newneticaenvironment(无,无,无)#(const char*license,environus*env,const char*locn)
#初始化Netica
mesg=创建字符串缓冲区(300)
netica.InitNetica2\u bn.argtypes=[c\u void\u p,c\u char\u p]
netica.InitNetica2_bn.restype=c_int
netica.InitNetica2_bn(环境,mesg)#(环境*env,char*mesg)
#创建新网络
netica.NewNet\u bn.argtypes=[c\u char\u p,c\u void\u p]
netica.NewNet\u bn.restype=c\u void\u p
net=netica.NewNet_bn('NewNetwork',env)#(const char*name,environ_ns*env)
当我运行上述代码时,我得到以下错误:

ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
ctypes.ArgumentError:参数1::类型错误
这表明netica.NewNet_bn()的第一个参数是错误的类型,即使它是一个字符串,并且arg类型被定义为“c_char_p”


作为参考,我在注释中添加了.dll函数所需的数据类型。我是否遗漏了一些关于数据类型的信息?

我找到了自己问题的解决方案。只需要先使用“String”对字符串进行编码。编码('utf-8')

或者您可以这样做:
net=netica.NewNet\u bn(b'NewNetwork',env)