0
我有hidapi.c庫:C#dllimport的wchar_t的*到StringBuilder的
int HID_API_EXPORT HID_API_CALL testwchar(wchar_t * string) {
//...
wcsncpy(string, cur_dev->serial_number, wcslen(cur_dev->serial_number));
return wcslen(cur_dev->serial_number);
}
我有什麼在C#:
[DllImport("hidapi.dll", CharSet = CharSet.Unicode)]
public static extern unsafe int testwchar(StringBuilder stringt);
StringBuilder sb = new StringBuilder(64);
res = testwchar(sb);
我錯過了一些代碼部分的C函數//...它通過vid/pid枚舉設備和搜索並返回串行,它工作正常,當我在testapi.cpp中測試它,但是當我嘗試編寫c#gui ... visual studio 2012引發錯誤,談論不平衡堆棧......據我瞭解,如果我使用字符串作爲出參數,我需要使用stringbuilder而不是字符串。
我在做什麼錯? thanx任何建議。
p.s.對不起,但格式化母鹿沒有工作,所以代碼是一團糟......
發佈'HID_API_EXPORT'和'HID_API_CALL'定義。可能這個問題是關於錯誤的調用約定。 – Dennis
[Unbalanced Stack!]的可能重複(http://stackoverflow.com/questions/4171790/unbalanced-stack) – shf301
不要這樣寫代碼。 testwchar()怎麼可能猜到StringBuilder有多少空間可用?猜測錯誤會破壞GC堆,非常難以診斷。添加另一個說明緩衝區有多大的參數。 –