Tôi đang tạo một trình bao bọc C++/CLI DLL phụ thuộc vào nhiều thư viện tĩnh C++. Một số hàm gọi các con trỏ không được quản lý sẽ được truyền vào. Làm cách nào để truyền chúng đúng cách?Truyền con trỏ không được quản lý trong C++/CLI
Ngoài ra, các chức năng khác mong đợi "con trỏ này" được chuyển vào dưới dạng khoảng trống *. Cách đúng để vượt qua "điều này" là gì?
Dưới đây là định nghĩa lớp học của tôi ...
public ref class RTPClient
{
public:
RTPClient();
~RTPClient();
bool Connect();
void Disconnect();
private:
CIsmaClient* mClient;
};
Dưới đây là cách sử dụng của tôi, nơi các con trỏ trong câu hỏi được sử dụng ...
RTPClient::RTPClient():
mClient(NULL)
{
CIsmaClient::Create(&mClient, NULL, &AllocBuffer, &GetDataPointer, this);
}
Việc sử dụng & mClient và " điều này "gây ra các lỗi trình biên dịch sau đây ... 1>. \ VBLoadSimulatorDll.cpp (40): lỗi C2664: 'CIs maClient :: Tạo': không thể chuyển đổi thông số 1 từ 'cli :: interior_ptr' thành 'CIsmaClient **' 1> với 1> [ 1> Loại = CIsmaClient * 1>]
1> \. VBLoadSimulatorDll.cpp (40): lỗi C2664: 'CIsmaClient :: Tạo': không thể chuyển đổi tham số 5 từ 'VBLoadSimulator :: RTPClient^const' sang 'VOID *'
Dưới đây là liên kết chính xác: http://msdn.microsoft.com/en-us/library/1dz8byfh.aspx –
Con trỏ là một lớp không được quản lý mặc dù ... – cjserio
nếu nó không được quản lý sau đó chỉ cần chỉ chuyển một đồng bằng C + + con trỏ chỉ là tốt. Tôi không thấy vấn đề là gì ... – ShuggyCoUk