当我尝试将非托管对象传递给托管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。我认为这是因为,我试图在托管函数中分配非托管内存。但我不知道如何解决这个问题。
答案 0 :(得分:0)
用户名或密码可能不正确。 AccessViolation最适合这些问题。 此外,我不明白为什么在你上面的代码中处理事情的方式应该出错。