私のC#アプリケーションからInParameterをVC++ DLLのエクスポート関数に渡す必要があります。C#からC++へのマーシャリング
int func_name (FILE* fp, BYTE& by);
fp
がでているとby
がパラメータアウトです:関数は2つのパラメータを受け付けます。
FILE*
の場合はIntPtr
を使用し、の場合はバイトを使用してマーシャリングを検討していました。それが正しいか?私はC#で次のように書いています
[DllImport("name_of_project.dll", CharSet = CharSet.Ansi)] public static extern int func_name(IntPtr FilePointer, [MarshalAs(UnmanagedType.BYTE&)] byte by);
それは動作しますか?マーシャリングステートメントの「&」サインにエラーが発生すると思います。 outパラメータを参照渡しで渡すにはどうすればよいですか?
あなたの助けに感謝します。書かれたよう
おかげで、Viren
Ravadreに感謝します。しかし、私はまだFILE *タイプマーシャリングに固執しています。あなたは同じことについての声明をお勧めしますか?4バイトの符号なし整数を使うべきですか?私はすぐにテストするコードはありません。私はすぐにそれを得るだろうし、今私は、次のことを考えています.. FORできるだけ早くここに更新します: DLLIMPORT(「name_of_project.dll」、のCharSet = CharSet.Ansi)] パブリック静的にextern int型のFUNC_NAME(U4ファイルポインタによるバイトアウト); – zack
Uf、これらのすべての編集を申し訳ありません、私はこの解決策をチェックし、それはかなりうまく動作します。 –
cool..thatsクリーンなアイデアは問題なく動作するはずです.thanks .. – zack