Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将char*传递到.Net的最佳方法_.net_C++_Memory_Com - Fatal编程技术网

将char*传递到.Net的最佳方法

将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中解决此问题

我想将一个大字符*从cpp传递到.Net(最好使用COM)。 (就记忆而言)最好的方法是什么


如果我使用CComBSTR,那么在CPP中创建BSTR时,尤其是在COM调用中将其移动到.Net时,都会占用大量内存。

我的选择是封送到字符串,尽管我也看到过如果有一些后期处理(如进一步的concats)要做,也会使用StringBuilders


参见一个简单的例子。

< p>可以传递一个StrugBuudid作为输入参数,C++代码可以写入其中。 从a:

要在完整的.NET Framework中解决此问题(因为许多Win32 API需要字符串缓冲区),您可以传递System.Text.StringBuilder对象;封送拆收器会将指针传递到可操作的非托管函数中。唯一需要注意的是,必须为StringBuilder分配足够的空间用于返回值,否则文本将溢出,导致P/Invoke引发异常


半重复问题“无论您选择什么,都需要创建副本”不正确;C++代码可以使用StringBuilder作为现有缓冲区来写入。