Estoy creando una DLL contenedora C++/CLI que depende de numerosas bibliotecas estáticas de C++. Algunas de las llamadas a funciones esperan que se pasen punteros no administrados. ¿Cómo los paso a pasar correctamente?Pasar punteros no administrados en C++/CLI
Además, otras funciones esperan que "este puntero" pase como un vacío *. ¿Cuál es la forma correcta de pasar "esto"?
Aquí está mi definición de clase ...
public ref class RTPClient
{
public:
RTPClient();
~RTPClient();
bool Connect();
void Disconnect();
private:
CIsmaClient* mClient;
};
Aquí está mi uso, donde se utilizan los punteros en cuestión ...
RTPClient::RTPClient():
mClient(NULL)
{
CIsmaClient::Create(&mClient, NULL, &AllocBuffer, &GetDataPointer, this);
}
El uso de & mClient y " esto "causa los siguientes errores del compilador ... 1>. \ VBLoadSimulatorDll.cpp (40): error C2664: 'CIs maClient :: Create': no se puede convertir el parámetro 1 de 'cli :: interior_ptr' a 'CIsmaClient **' 1> con 1> [1 > Tipo = CIsmaClient * 1>]
1> \. VBLoadSimulatorDll.cpp (40): error C2664: 'CIsmaClient :: Create': no se puede convertir el parámetro 5 de 'VBLoadSimulator :: RTPClient^const' a 'VOID *'
Aquí es el enlace correcto: http://msdn.microsoft.com/en-us/library/1dz8byfh.aspx –
el puntero apunta a una clase no administrada, aunque ... – cjserio
si es administrado entonces simplemente pasando una llanura solo C + + puntero está bien. No veo cuál es el problema ... – ShuggyCoUk