我有一个用char *缓冲区调用的C ++函数用于输出。现在我想用C#写它,所以我需要从C ++函数调用一个托管方法。我无法弄清楚的是如何将它作为StringBuilder传递。
我之前使用Robert Giesecke's Unmanaged Exports工作正常,并使用默认的字符串编组方案自动完成,但我想使用size参数作为StringBuilder的MaxCapacity。
有没有更好的方法来创建一个新的StringBuilder实例,写入它,获取带有ToString()
的CLR字符串,然后将内容复制到缓冲区?有问题的字符串可能长达10,000个字符,我不太喜欢每次复制两次的想法。
C#
public static void MyMethod(StringBuilder buffer)
{
//...
}
C ++ / CLI
extern "C" __declspec(dllexport)
void __stdcall MyFunction(char* buffer, int length)
{
MyNamespace::MyClass::MyMethod( /* ? */ );
}
答案 0 :(得分:0)
使用GET /3.0/projects/<project_name>/queries/saved HTTP/1.1
HOST: api.keen.io
authorization: <your_key>
content-type: application/json
然后c ++ 8位字符数组将正确对齐。
我更喜欢做类似的事情,因为我将它用于非托管代码:
byte []