我有一个使用以下方法的 C++ dll:
//C++ dll method (external)
GetServerInterface(ServerInterface* ppIF /*[OUT]*/)
{
//The method will set ppIF
}
//ServerInterface is defined as:
typedef void * ServerInterface;
为了从 C# 项目访问 dll,我创建了一个 C++/CLI 项目并声明了一个托管类,如下所示:
public ref class ComWrapperManager
{
//
//
ServerInterface _serverInterface;
void Connect();
//
//
}
我使用 Connect() 方法调用 GetServerInterface,如下所示。第一个电话有效,第二个电话无效。有人可以解释为什么吗?我需要将该指针作为成员变量保留在托管类中。有没有更好的方法来做到这一点?
void Connect()
{
ServerInterface localServerInterface;
GetServerInterface(&localServerInterface); //THIS WORKS
GetServerInterface(&_serverInterface); //THIS DOESNT
//Error 1 error C2664: 'ServerInterface ' :
//cannot convert parameter 1 from //'cli::interior_ptr<Type>'
//to 'ServerInterface *'
}