C# 将非托管对象引用传递给C+中的非托管方法+/CLI管理的方法
当我试图将非托管对象传递给托管C++/CLI类中编写的方法中的COM方法时,出现异常。下面是代码示例C# 将非托管对象引用传递给C+中的非托管方法+/CLI管理的方法,c#,c++-cli,interop,com-interop,unmanaged,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::I
//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”运行时错误。我认为这是因为,我试图在托管函数中分配非托管内存。但我不知道如何解决这个问题。可能是用户名或密码不正确。AccessViolation最值得注意的就是这些问题。
另外,我不明白为什么上面代码中的处理方式会出错。可能与前面的处理方式类似,但在这里,我遇到了将非托管对象传递给托管方法中的COM方法的问题。Post如果您有任何链接可以帮助您在将托管代码传递给托管函数之前进行封送处理。你应该查看下面的链接。顺便说一句,除非在此处使用跟踪指针,否则存在内存泄漏:
CConfiguration^Configuration代码>和配置=gcnew CConfiguration()代码>