IronPython崩溃不适用于Python 2.7和3.3

IronPython崩溃不适用于Python 2.7和3.3,python,python-2.7,ironpython,Python,Python 2.7,Ironpython,我不知道为什么Ironpython在执行DLL后崩溃,而不是Python2.7和3.3 我的代码如下 import ctypes import time DLLHANDLE=ctypes.cdll.LoadLibrary("C:\\INSTRDLL\\builds\\DCSOURCEDLL\\B2902A.dll") INPUTSCRIPT="SYSTEM{DCSOURCE1|INIT}" INPUTVOLTAGE=0.0 SOURCEHANDLE=DLLHANDLE.DCSOURCE(c_IN

我不知道为什么Ironpython在执行DLL后崩溃,而不是Python2.7和3.3

我的代码如下

import ctypes
import time
DLLHANDLE=ctypes.cdll.LoadLibrary("C:\\INSTRDLL\\builds\\DCSOURCEDLL\\B2902A.dll")
INPUTSCRIPT="SYSTEM{DCSOURCE1|INIT}"
INPUTVOLTAGE=0.0
SOURCEHANDLE=DLLHANDLE.DCSOURCE(c_INPUTSCRIPT,c_INPUTVOLTAGE)
time.sleep(1)
基本上,一旦发出
INPUTSCRIPT
,DLL就会调用instrument来执行初始化

我已经附上了坠机截图。请帮忙


ctypes
通常是一堆与乐趣相反的东西。对于普通的Python,这就像用C编写代码——注意指针、数据类型等等——但至少CPython与C比较接近,而且工作起来可以接受(这也是被广泛使用的优势)

在IronPython中,就是这样,加上CLR必须对所有内容进行中介—它使用.NET封送API,并且在运行时生成p/Invoke声明。执行此操作的代码相当复杂,并且有已知的bug-处理原始内存不是.NET设计的目的

一个值得关注的方面是IronPython使用Unicode字符串,而您没有指定
DCSOURCE
函数的类型(wide/Unicode/
wchar\u t*
或窄/ANSI/
char*
)。如果不知道C函数的签名,很难说。我也不记得IronPythonCtypes默认假定和转换为什么