Tôi đang cố gọi một thư viện C++ hiện có từ ứng dụng C# bằng cách sử dụng lớp xen kẽ C++/CLI. Tôi có hàm C++ trông giống như sau:Hệ thống :: IntPtr tới int * trong C++/CLI
void doSomething(int* foo, int size);
Và đối tượng C# chứa hai trường, bắt đầu IntPtr và kích thước int. Tôi đã viết một lớp C++ quản lý mà trông như thế này:
public ref class Wrapper {
public:
void run(System::IntPtr itn, int size);
};
Và bây giờ tôi muốn gọi doSomething trong Wrapper :: chạy, và có doSomething có quyền truy cập vào cùng một khối dữ liệu mà điểm C đối tượng # để. Là những gì tôi đang cố gắng để làm có thể mà không có một bản sao, và nếu như vậy, làm thế nào?
Chắc chắn bạn có nghĩa là để viết mà là 'void run (int% ITN, int size) '? Nếu không thì bộ nhớ cần được ai đó ghim. Do ** not ** bỏ qua yêu cầu đó, tốt nhất nên làm điều đó trong C++/CLI với pin_ptr <> để mã C# có thể đơn giản sử dụng int []. –
Xin lỗi, tôi mới sử dụng CLI và C#, tôi gần như quen thuộc với C++ và C. Bộ nhớ ghim làm gì? –