C#调用C++动态库时字符串作为输出参数的问题


常常会觉得一个返回值不够,在C#中使用out或者ref都很方便,下文记录字符串类型作为传入参数且需要修改后返回的处理方式。
C++中的接口:

extern "C" __declspec(dllexport) void GetString(char* str);

C++中的实现:

void GetString(char* str)
{
    // str字符串需要传出去,所以用的是外部给的一块空间,不要在这里重新为str做new
    string a = "Ceshi";
    // 注意这里长度需要加1
    strcpy_s(str, a.length() + 1, a.c_str());
}

C#中的调用:

// 使用StringBuilder来存储这个字符串,要注意初始化足够的长度
StringBuilder sb = new StringBuilder(1024);
GetString(sb);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM