問題タブ [marshalling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - リンクされたリストのマーシャリング
重複投稿失礼します。
やあ
DLL からのリンク リストのマーシャリングに問題があります。
------C++ の構造と機能--------
-----------C#宣言-----------
deref2 宣言で FatalExecutionEngine Exception が発生します。リンクされたリストを元に戻し、その内容にアクセスする方法がわかりません。
リンク リストを取得するために作成した C++ コードを次に示します。C#で動作するようなものが欲しいです。
java - jaxbでコレクション型のメンバーに注釈を付ける方法
次のクラスを正常にマーシャリングしました
ここで、コンテナ クラスに Field の複数のインスタンスを保持させたいので、次の方法でクラスを宣言します。
オブジェクトフィールドをマーシャリングしようとすると、次のエラーが発生します。
クラス java.util.LinkedList もそのスーパークラスもこのコンテキストに認識されていません
コンテナー クラスがフィールドのコレクションとしてマーシャリングされるように、フィールド メンバーに注釈を付けるにはどうすればよいですか?
c# - C#を使用してマネージコードにアンマネージ構造体をマーシャリングする
外部アプリケーションから取得するときにbytes[]を処理する必要があります。外部アプリケーションもC#で実行され、UDPを介してバイトを送信します。彼らは以下に述べる構造体から変換されたバイトを送信しています:
したがって、バイトを取得するときは、その中のchar []を取り出し、そのchar[]から文字列を取り出す必要があります。
私はこの種の管理されていないコーディングに不慣れです。
c# - C#DLLexternプロトタイプヘルプ
次のようなエクスポートを含むCDLLがあります。
C#側では、これを次のように使用しています。
上記は実際には問題なく機能しますが、マーシャリングに必要なものを何として理解するのに時間がかかりました。考えられるすべてのc/cppデータ型とそれに相当するC#マーシャリングをリストしたガイドはありますか?
次のようなもの:
c => C#
Char * myVar => [MarshalAs(UnmanagedType.LPStr)] string myVar
...
しかし、すべてのタイプをリストしますか?
私が尋ねる理由は、「ref」、out、IntPtrをいつ使用するか、または何かをマーシャリングするためにどのタイプを使用するかがわからないためです。
最後に、上記のコードでは、unsignedchar配列へのポインターを文字列への長いポインターとしてマーシャリングしています。これは正しくないようですが、機能します。これがbyte[]配列になってしまう方が理にかなっていますが、動作させることができません。オンラインリファレンスがあれば、私は使用できます...
c# - スローされた保護メモリ例外の読み取り/書き込み(.net)
最後の行にスローされている例外によって、保護されたメモリで読み取り/書き込みを行おうとしていると言われています。私はここで何が間違っているのですか?ありがとう
delphi - Delphi 7でGITを入手するにはどうすればよいですか?
次のコード(Delphi)を使用してグローバルインターフェイステーブルを取得しようとしています。
ただし、CoCreateInstanceは「ClassNotRegistered」例外をスローします。そして確かに:HKCR / CLSIDには、{00000146-など}のエントリはありません。
レジストリでこの定義を取得するには、どのdllまたはocxを登録する必要がありますか?それとも私はそれを完全に間違っていますか?
c# - 構造体の配列を IntPtr に変換します
RECT 構造体の配列 (以下を参照) を IntPtr に変換しようとしているので、PostMessage を使用してポインターを別のアプリケーションに送信できます。
これにより、最後の行で ArgumentException が発生します (「指定された構造体は blittable であるか、レイアウト情報を持っている必要があります。」)。PostMessage を使用して、この RECT の配列を別のアプリケーションに渡す必要があるため、このデータへのポインタが本当に必要です。
ここでのオプションは何ですか?
更新:これはうまくいくようです:
アービターがコメントした内容を修正するために再度更新しました。
c# - C# の Marshal.Copy の NUL 文字
次のメソッドが定義されています。
このメソッドでは、提供された文字列 (recordInformation) が C で記述されたメソッド (UnmanagedMethod) に渡されます。このメソッドについて私が持っているドキュメントに基づいて、bufferSize は適切に設定されています。ただし、Marshal.Copy は代わりに、recordInformation.Length のサイズの配列を作成します。ray を outputRecord 変数に割り当てたとき、文字列の内容は bufferSize の長さです。ただし、recordInformation.Length フィールドに到達するまで、文字列の残りを埋める NUL (文字 0) がいくつかあります。UnmanagedMethod パラメータ リストの最後のパラメータを bufferSize に変更すると、出力文字列は NUL 文字だけになります。
マーシャリングが間違っていますか、または文字列がバイト配列から作成された後に NUL 文字を削除する方法はありますか?
ありがとう
c# - C# からアンマネージ C++ へ
C# コードで 2 つの構造を作成しました。
と :
C# コードでは、C++ dll の関数を呼び出します。
C++ には、2 つの構造体もあります。
と
関数は次のようにも宣言されています。
C# で構造体を埋める例:
デバッグ モードでは、DLL への呼び出しの直前に、C# の両方の構造が正しい (multiRollInfo と rollInfo) です。C++ では、rollInfo が適切です。しかし、マルチロール情報には 5 つの要素がありますが、値が間違っています。
なにが問題ですか?どうすればこれを修正できますか?
ご助力ありがとうございます