現在、DLLと.NET間のラッパーを作成しています。
その際にDLLにアドレスを渡す際に以下のような方法を使って、DLL側にデータを渡しています。
C++
1 2int wrapper(array<unsigned int>^ startp) 3{ 4 IntPtr startp_ptr = Marshal::AllocHGlobal(sizeof(unsigned int) * startp->Length); 5 6 // データをセット 7 Marshal::Copy(startp, 0, startp_ptr, startp->Length); //コンパイルエラー 8 9 int ret = ::wrap(static_cast<const size_t*>(startp_ptr.ToPointer())); 10 11 //メモリ解放 12 Marshal::FreeHGlobal(startp_ptr); 13 14 return ret; 15} 16
問題の個所はデータセットの際にMarshal::Copyメソッドを呼び出しているのですが、符号ありのデータをコピーできるのですが、符号なし(unsigned int)は定義して存在していないため、Marshal::Copyできません。
このような場合、どのように対処するのがいいのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/14 04:33
2016/12/14 05:04
2016/12/14 05:32