Tworzę bibliotekę DLL C++/CLI, która zależy od wielu bibliotek statycznych C++. Niektóre wywołania funkcji wymagają podania niezarządzanych wskaźników. Jak przekazać je poprawnie?Przekazywanie niezarządzanych wskaźników w C++/CLI
Również inne funkcje oczekują, że "ten wskaźnik" zostanie przekazany jako pusty *. Jaki jest właściwy sposób przekazania "tego"?
Oto moja definicja klasy ...
public ref class RTPClient
{
public:
RTPClient();
~RTPClient();
bool Connect();
void Disconnect();
private:
CIsmaClient* mClient;
};
Oto mój zwyczaj, gdzie stosowane są wskaźniki w pytaniu ...
RTPClient::RTPClient():
mClient(NULL)
{
CIsmaClient::Create(&mClient, NULL, &AllocBuffer, &GetDataPointer, this);
}
Wykorzystanie & mClient i " powoduje to następujące błędy kompilatora ... 1>. \ VBLoadSimulatorDll.cpp (40): error C2664: 'CIs maClient :: Tworzenie”: nie można konwertować parametru 1 od 'cli :: interior_ptr' do 'CIsmaClient **' 1> z 1> [ 1> Typ = CIsmaClient * 1>]
1> \. VBLoadSimulatorDll.cpp (40): błąd C2664: "CIsmaClient :: Utwórz": nie można przekonwertować parametru 5 z "VBLoadSimulator :: RTPClient^const" na "VOID *"
Oto prawidłowe powiązanie: http://msdn.microsoft.com/en-us/library/1dz8byfh.aspx –
wskaźnik jest niezarządzanego klasy mimo ... – cjserio
jeśli jest niekontrolowana wtedy po prostu przekazując zwykły tylko C + + wskaźnik jest w porządku. Nie widzę problemu. – ShuggyCoUk