2013-10-30 2 views
0

위해 나는 왜 IronPython의 충돌 DLL을 실행 한 후 아무 생각하지하지만 기본적으로IronPython의 충돌은 파이썬 2.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) 

는, DLL이 호출 기기는 다음과 같이 2.7 및 3.3

내 코드를 파이썬하지 INPUTSCRIPT이 발행되면 초기화를 수행합니다.

크래시 스크린 샷을 첨부했습니다. 도와주세요 ...

답변

0

ctypes

enter image description here

는, 일반적으로, 재미의 반대는 무엇이든의 전체 더미입니다. 일반적인 파이썬에서는 C로 코딩하는 것과 같습니다 (포인터, 데이터 유형 등을 감시합니다).하지만 적어도 CPython은 C에 비교적 가깝고 잘 작동합니다 (훨씬 더 널리 사용되는 장점이기도합니다).

IronPython에서는 CLR이 모든 것을 중간 처리해야합니다. .NET 마샬링 API를 사용하며 런타임에 P/Invoke 선언을 생성합니다. 이 작업을 수행하는 코드는 다소 복잡하며 버그가 알려져 있습니다. 원시 메모리를 다루는 것은 .NET이 설계 한 것이 아닙니다! 우려의

한 영역은 당신이 DCSOURCE 기능을한다 (와이드/유니 코드/wchar_t* 또는 좁은/ANSI/char*를) 입력 한 내용을 지정하지 않는 동안은 IronPython은 유니 코드 문자열을 사용한다는 것입니다. C 함수의 서명을 알지 못하면 말하기 어렵습니다. 또한 IronPython ctypes가 기본적으로 가정하고 변환하는 내용을 기억하지 못합니다.