我想知道是否有人可以帮助我理解这个错误。我正在用python调用LabVIEW生成的dll,该dll通过CAN协议与DCM通信。
在Python中调用的LabVIEW函数的结构和输入参数如下:
int32_t func_1(CStr version_number, int32_t Verbose, CStr SetupFileName);
我知道该dll已导入Python,并且正确输入了该参数,因为具有相同结构的其他函数具有相同的输入参数,并且它们不会返回错误。
import ctypes as c
mydll = c.windll.LoadLibrary('intcan.dll') #'C:/Users/PycharmProjects/impdll/intcan.dll')
mydll.func_1(c.c_char_p('15.1.1.1'), c.c_int(0), c.c_char_p('CanDevice.xml'))
运行代码时,出现以下错误。
Traceback (most recent call last):
File "C:/Users/PycharmProjects/impdll/venv/tester.py", line 22, in <module>
mydll.func_1(c.c_wchar_p('15.1.1.1'), c.c_int(0), c.c_wchar_p('CanDevice.xml'))
OSError: [WinError -529697949] Windows Error 0xe06d7363
Process finished with exit code 1
答案 0 :(得分:0)
有多种方法可以配置字符串以将其传递到LabVIEW DLL中的函数中。
如果字符串只是输入,则最简单的方法是设置:
这将产生此函数原型:
void func_1(char MyString[])
然后您可以使用以下方式在Python中调用
:import ctypes as c
mydll = c.windll.LoadLibrary('mydll.dll')
mydll.func_1("myValue".encode("ascii"))