将char*传递到.Net的最佳方法
我想将一个大字符*从cpp传递到.Net(最好使用COM)。 (就记忆而言)最好的方法是什么将char*传递到.Net的最佳方法,.net,c++,memory,com,.net,C++,Memory,Com,我想将一个大字符*从cpp传递到.Net(最好使用COM)。 (就记忆而言)最好的方法是什么 如果我使用CComBSTR,那么在CPP中创建BSTR时,尤其是在COM调用中将其移动到.Net时,都会占用大量内存。我的选择是封送到字符串,尽管我也看到过如果有一些后期处理(如进一步的concats)要做,也会使用StringBuilders 参见一个简单的例子。< p>可以传递一个StrugBuudid作为输入参数,C++代码可以写入其中。 从a: 要在完整的.NET Framework中解决此问题
如果我使用CComBSTR,那么在CPP中创建BSTR时,尤其是在COM调用中将其移动到.Net时,都会占用大量内存。我的选择是封送到字符串,尽管我也看到过如果有一些后期处理(如进一步的concats)要做,也会使用StringBuilders
参见一个简单的例子。
< p>可以传递一个StrugBuudid作为输入参数,C++代码可以写入其中。 从a: 要在完整的.NET Framework中解决此问题(因为许多Win32 API需要字符串缓冲区),您可以传递System.Text.StringBuilder对象;封送拆收器会将指针传递到可操作的非托管函数中。唯一需要注意的是,必须为StringBuilder分配足够的空间用于返回值,否则文本将溢出,导致P/Invoke引发异常半重复问题“无论您选择什么,都需要创建副本”不正确;C++代码可以使用StringBuilder作为现有缓冲区来写入。