0

DLL の実行後に Ironpython がクラッシュする理由はわかりませんが、Python 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)

基本的に、DLLINPUTSCRIPTは発行された時点で初期化を実行するためにインストゥルメントを呼び出しています。

クラッシュのスクリーンショットを添付しました。助けてください...

ここに画像の説明を入力

4

1 に答える 1

0

ctypes、一般的に、楽しみの反対が何であれ、山積みです。通常の Python では、C でコーディングするようなものです - ポインター、データ型などに注意してください。しかし、少なくとも CPython は比較的 C に近く、問題なく動作します (より広く使用されているという利点もあります)。

IronPython では、さらに CLR がすべてを仲介する必要があります。CLR は .NET マーシャリング API を使用し、実行時に P/Invoke 宣言も生成します。これを行うコードはかなり複雑で、既知のバグがあります。生のメモリを扱うことは、.NET が行うように設計されたものではありません!

DCSOURCE懸念事項の 1 つは、IronPython が Unicode 文字列を使用しているのに、関数が取る型 (wide/Unicode/wchar_t*または wide/ANSI/ )を指定していないことですchar*。C 関数のシグネチャを知らなければ、なんとも言えません。また、IronPython ctypes がデフォルトで何を想定し、何に変換するか覚えていません。

于 2013-10-30T22:03:38.773 に答える