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