Tôi đã thử nhiều thứ khác nhau nhưng tôi phát điên với Interop.Vượt qua chuỗi C# thành C++ và vượt qua kết quả C++ (chuỗi, char * .. bất kỳ) thành C#
(ở đây chuỗi từ không được gọi là loại biến nhưng "bộ sưu tập char"): Tôi có hàm C++ không được quản lý, được định nghĩa trong dll, mà tôi đang cố truy cập từ C#, hàm này có tham số chuỗi và giá trị trả về chuỗi như sau:
string myFunction(string inputString)
{
}
Chuỗi nên ở bên C++ là gì? và C# một? và những thông số cần DllImport cho điều này?
Đây là phương pháp chính xác. Lưu ý rằng bạn không phải vượt qua kích thước bộ đệm bằng cách tham chiếu. C/C++ nên chấm dứt chuỗi, buffer.ToString() tạo ra giá trị trả về. –
Cảm ơn tất cả các bạn đã trả lời. Tôi đọc ở đâu đó mà StringBuilder được sử dụng cho chuỗi đầu ra, nhưng tôi cũng cần phải chuyển đến hàm C++ một chuỗi đầu vào .. tôi nên sử dụng loại nào? Ở phía C++ tôi đã đặt chuỗi char * và C#, nhưng nó không hoạt động. Cuối cùng, tôi có thể xác định đầu ra "chuỗi" (bên C++) như là một const char *? Hoặc tôi phải có một char *? – Smjert
@Smjert: Sử dụng const char * là một cách hay để đi nếu bạn không thay đổi nó. Điều này sẽ chỉ tốt cho một chuỗi ở phía C#. Bạn đang thấy loại vấn đề gì? –