※ ChatGPTを利用し、要約された質問です(原文:C#でアンマネージドの関数を呼ぶ時のLPBYTEの処理)
C#でアンマネージドの関数を呼ぶ時のLPBYTEの処理
このQ&Aのポイント
C#におけるアンマネージド関数でLPBYTEを扱う方法について困っています。
VC++で使っていた関数をC#から呼び出したいが、LPBYTEの処理で問題が発生しています。
C#でLPBYTEと同様の領域を扱う方法がわからず、エラーが発生しています。
C#でアンマネージドの関数を呼ぶ時のLPBYTEの処理
C#に首を突っ込み始めたばかりの初心者です。
VC++で使っていた関数をC#から使いたいのですが、四苦八苦しています。
引数としてLPBYTEをとるような関数ですが、C#からどのようにして呼べばいいのか困っています。呼ぶには呼ぶようですが、たぶんLPBYTEの処理がうまくいっていないので、例外処理されてしまいます。
ソースはこんな感じです。(途中、省略しています。)
unsafe public class foo : ... {
[DllImport("bar.dll")]
private static extern int hoge(StringBuilder pBuf, int i);
unsafe private void button(...) {
StringBuilder pBuf = new StringBuilder(256*256);
try {
hoge(pBuf, 100);
}
catch{
...
}
}
}
hogeの最初の引数が、LPBYTEだったところで、StringBuilderならいけるかなぁ、と思ってやってみたのですが、どうもダメっぽいです。おもいっきりcatchに入っていきます。
そもそも、C#でLPBYTEのような領域の扱いがわかっていないのがいけないのかもしれません...
素人の質問ですみません。