1
這裏是我的C函數:如何將字節從C返回到C#/。net?
DLL_PUBLIC void alve_ripemd320__finish(void* instance, uint32_t* out_hash)
{
...
for (uint32_t i=0, i_end=10; i<i_end; i++)
{
out_hash[i] = h[i];
}
}
,這裏是如何,我從C#調用它:
[DllImport(PlatformConstants.DllName)]
static extern void alve_ripemd320__finish (IntPtr instance_space, ref byte[] hash);
...
public byte[] Finish()
{
byte[] result = new byte[40];
alve_ripemd320__finish (c_instance, ref result);
return result;
}
,如果我評論的C代碼產生一個醜陋的內存設計缺陷,其消失上面寫到out_hash ....我的問題是,這是使用PInvoke傳遞字節緩衝區的正確方法?
要問明顯的問題:當你從C調用'alve_ripemd320__finish'時是否工作? –
@AustinSalonen我從來沒有從C中調用它,但是當我評論修改out_hash的代碼時,它可以工作(沒有做任何事情)。我知道這個錯誤可能在其他地方,但我的是/否問題:這是使用PInvoke傳遞字節緩衝區的正確方法嗎? – dsign
當C API是無符號整數時,爲什麼要將C#端定義爲'byte []'? –