Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Xamarin/Mono上,GetObjectForIUnknown抛出PlatformNotSupportedException 我有非托管C++类,它们正确地实现了IONDENT。我将代码编译成一个共享库,并将库部署到Android手机上。我实现了一个简单的Xamarin.Forms(C#)应用程序,它通过标准的P/Invoke使用这个库。使用工厂方法,我创建了一组这些类,每个类都有自己的特定类型(并实现了自己的接口,从而使用支持的iid将S_OK返回到QueryInterface调用)_C#_Android_Xamarin_Com_Mono - Fatal编程技术网

在Xamarin/Mono上,GetObjectForIUnknown抛出PlatformNotSupportedException 我有非托管C++类,它们正确地实现了IONDENT。我将代码编译成一个共享库,并将库部署到Android手机上。我实现了一个简单的Xamarin.Forms(C#)应用程序,它通过标准的P/Invoke使用这个库。使用工厂方法,我创建了一组这些类,每个类都有自己的特定类型(并实现了自己的接口,从而使用支持的iid将S_OK返回到QueryInterface调用)

在Xamarin/Mono上,GetObjectForIUnknown抛出PlatformNotSupportedException 我有非托管C++类,它们正确地实现了IONDENT。我将代码编译成一个共享库,并将库部署到Android手机上。我实现了一个简单的Xamarin.Forms(C#)应用程序,它通过标准的P/Invoke使用这个库。使用工厂方法,我创建了一组这些类,每个类都有自己的特定类型(并实现了自己的接口,从而使用支持的iid将S_OK返回到QueryInterface调用),c#,android,xamarin,com,mono,C#,Android,Xamarin,Com,Mono,该对象是使用p/Invoked本机工厂方法创建的,因此我获得了一个有效的IntPtr类型指针 然而,当我试着打电话时 IntPtr myObj = NativeBridge.CreateMyObject(); var obj = Marshal.GetObjectForIUnknown(myObj); 代码抛出平台不支持异常 该网站声明,我使用的.NET标准2.0支持此方法 我的Xamarin.Forms项目在微软Visual Studio 2017中编译为Xamarin.Android+共享

该对象是使用p/Invoked本机工厂方法创建的,因此我获得了一个有效的
IntPtr
类型指针

然而,当我试着打电话时

IntPtr myObj = NativeBridge.CreateMyObject();
var obj = Marshal.GetObjectForIUnknown(myObj);
代码抛出
平台不支持异常

该网站声明,我使用的.NET标准2.0支持此方法

我的Xamarin.Forms项目在微软Visual Studio 2017中编译为Xamarin.Android+共享.NET标准2.0库

我是否遗漏了一些暗示?在此配置中,Xamarin是否真的不支持GetObjectForIUnknown?是否有其他方法可以达到相同/相似的结果?还是我在做一些完全错误的事情

EDIT1:对同一
IntPtr
调用的
Marshal.QueryInterface
抛出
NotImplementedException

EDIT2:在Mono-in-master中似乎不受支持:
QueryInterface
GetObjectForIUnknown
方法实现被包装在
MOBILE
的条件中


我的问题是:在XAMARIN中,有没有一种方法可以在单/安卓上使用COM模型,而不必滚动我自己的本地库来实现这些实现?

如何在Xamarin使用C++ COM,你可以检查下面的链接。WendyZang MSFT我非常了解在托管环境中使用本机库的其他方法。但是,COM接口是实现互操作性的标准方法,无需定制包装器库。我的观点是,我应该能够调用QueryInterface、GETObjutFixIngor和Type EngestCp,然后调用被托管对象的方法,它透明地调用非托管I未知类实例。对于如何在Xamarin使用C++ COM,您可以检查下面的链接。WendyZang MSFT我非常了解在托管环境中使用本机库的其他方法。但是,COM接口是实现互操作性的标准方法,无需定制包装器库。我的观点是,我应该能够调用QueryInterface、GetObjectForIUnknown和typecast到C#包装器,然后调用托管对象的方法,该方法透明地调用非托管IUnknown类实例。