Smj*_*ert 13 c# c++ string interop
我尝试了不同的东西,但我对Interop很生气.
(这里的单词string不是指变量类型,而是"char的集合"):我有一个非管理的C++函数,在dll中定义,我试图从C#访问,这个函数有一个字符串参数和一个字符串返回值,如下所示:
string myFunction(string inputString)
{
}
C++方面应该是什么字符串?和C#one?什么参数需要DllImport呢?
Sco*_*aad 18
我发现最有效的方法是更清楚地了解这里发生了什么.在这种情况下,可能不建议将字符串作为返回类型.
一种常见的方法是让C++端传递缓冲区和缓冲区大小.如果它不足以让GetString放入其中,则修改bufferSize变量以指示适当的大小.然后,调用程序(C#)将缓冲区的大小增加到适当的大小.
如果这是您导出的dll函数(C++):
extern "C" __declspec void GetString( char* buffer, int* bufferSize );
匹配C#将是以下内容:
void GetString( StringBuilder buffer, ref int bufferSize );
因此,要在C#中使用它,您将执行以下操作:
int bufferSize = 512;
StringBuilder buffer = new StringBuilder( bufferSize );
GetString( buffer, ref bufferSize );
| 归档时间: | 
 | 
| 查看次数: | 29593 次 | 
| 最近记录: |