C# からサードパーティの DLL を呼び出そうとしていますが、一部の文字列データのマーシャリングに問題があります。DLL は Clarion で作成されたもので、使用されているデータ型についてはよくわかりません。具体的には、仕様には、機能しない関数の次の署名があります。
Bool QuerySoftwareVersion( cstring* version) // edited documentation typo
//Returns Software version (20 character cstring).
cstring は null で終わる文字列であると想定していましたがout char[] version
、定義で動作させることができませんでした。これを処理する正しい方法を知っている人はいますか?
編集: 実際、これまでに発見したことは、Clarion の cstring が実際には null で終わる文字列であることを示唆しています。
更新: DLL ドキュメントにタイプミスがあることが判明したため、質問のタイトルと詳細を更新しました。問題のパラメーターは、 cstring ではなくtypeversion
として宣言されているように見えますが、明らかに c スタイルの null で終わる文字列です。したがって、マーシャリングはそれほど複雑ではないはずです。なぜなら、C 呼び出し規則で書かれていると彼らは主張しているからです。参照パラメーターを介して文字列を渡すクラリオン DLL を正常に p/invoke した人はいますか?cstring*
cstringt*. And in Clarion,