在C ++ / CLI托管方法中将非托管对象引用传递给Unmanaged方法

时间:2010-11-29 07:37:32

标签: c# c++-cli interop com-interop unmanaged

当我尝试将非托管对象传递给托管C ++ / CLI类中编写的方法中的COM方法时,我遇到异常。以下是代码示例

//C++/CLI class 
public ref class PSIAAdaptorManagedWrapper
{
    CConfiguration *Configuration;
    void InitializeConfig();    
}

//C++/CLI Method implementation 
void PSIAAdaptorManagedWrapper::InitializeConfig() {
    Configuration = new CConfiguration();
    Configuration->IPAddress = "127.0.0.1";
    Configuration->UserName = "User";
    Configuration->password = "password";    
    SomeComObject->GetInitiConfig((void *) Configuration);  // Exception line
}

//signature of COM object from IDL file (observer paramer it takes is in) 
[helpstring("method InitializeCameraConfig")]
HRESULT GetInitiConfig([in] void *configparam);

上面的代码编译得很好。但是当执行时,我得到“System.AccessViolation”runt time error on line。我认为这是因为,我试图在托管函数中分配非托管内存。但我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

用户名或密码可能不正确。 AccessViolation最适合这些问题。 此外,我不明白为什么在你上面的代码中处理事情的方式应该出错。