0

我在 hidapi.c 库中有什么:

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 而不是 string。

我究竟做错了什么?感谢您的任何建议。

ps对不起,但格式化不起作用,所以代码很乱......

4

1 回答 1

0

我建议您自己使用 hidapi 函数来编译您想要的信息。您可以在此处找到它们的文档,而不是使用此字符串函数。效率会高很多。

如果您需要指针,此页面上的代码应该可以帮助您。

于 2013-06-11T18:26:29.153 回答