Tag: stringbuilder

通过互操作接收字符串

我无法从我写的一些c代码中获取字符串。 首先是一些通常未分离的背景信息:我想从TAPI API接收TAPI TSP的用户可读字符串。 我已经实现了一个半可行的TAPI解决方案,依赖于匹配的驱动程序名称到存储的字符串,但是想要改变它以使用permanant line id,因为我们的一个客户有一个(阿尔卡特)PBX拒绝以任何其他方式工作。 在C中,我将头文件中的函数定义为: __declspec(dllexport) void GetDeviceName(long DeviceId, wchar_t* DeviceName); 这样写的function如下: __declspec(dllexport) void GetDeviceName(long DeviceId, wchar_t* DeviceName) { //tapi code here… //copy the string to DeviceName wcscpy(DeviceName, (wchar_t*)((char *)devCaps + devCaps->dwLineNameOffset)); } 如上所述,这最终会做一些有用的事情,但是现在我很高兴如果abc放在我的wchar_t * / StringBuilder中,我可以在C#中看到它。 在C#中我将函数定义为: [DllImport(“SBW.Tapi.TapiInterop.dll”, CharSet = CharSet.Auto)] static extern void GetDeviceName(long DeviceId, StringBuilder DeviceName); 我将DeviceName定义为StringBuilder,因为字符串是不可移植的,我希望DeviceName在C中设置( 这是MS推荐的 )。 […]