我面臨着一個消息AOT問題嘗試JIT編譯方法'(包裝託管到本機); ...包裝_aot_native(對象)'在運行時與 - 只 - 只。AOT問題與消息試圖與Xamarin iOS上的Pinvoke JIT編譯方法
我有一個包含應該由本機函數(稱爲LoadContext)進行初始化的方法指針的結構,這個結構看起來是:
[StructLayout (LayoutKind.Sequential)]
public struct WrapperContext
{
public int ctxVersion;
public unsafe GetLibraryVersionXDelegate GetLibraryVersion;
public unsafe GetLibraryDateXDelegate GetLibraryDate;
public unsafe InitCallbackTableXDelegate InitCallbackTable;
.....
}
當我打電話應該初始化WrapperContext結構的LoadContext本地方法中,下面的例外是由運行時引發:
試圖JIT編譯方法「(包裝管理到本機)XXXXX.XXXXXX.XXXXX.GetLibraryVersionXDelegate:wrapper_aot_native(對象)」,同時用運行--aot-只要。有關更多信息,請參閱http://docs.xamarin.com/ios/about/limitations。
試圖解決這個問題,我創建了一個包含完全相同的字段列表中的其他結構,但IntPtr的更換委託類型:
[StructLayout (LayoutKind.Sequential)]
public struct WrapperContext2
{
public int ctxVersion;
public IntPtr GetLibraryVersionXDelegate GetLibraryVersion;
public IntPtr GetLibraryDateXDelegate GetLibraryDate;
public IntPtr InitCallbackTableXDelegate InitCallbackTable;
.....
}
現在,調用我的家鄉LoadContext正常工作並且我得到每個函數的指針,但是當試圖使用Marshal.GetFunctionPointerForDelegate()將函數指針轉換爲其代表表示形式時,運行時拋出了完全相同的異常:
嘗試JIT編譯方法'(包裝託管到本機)XXXXX.XXXXXX.XXXXX.GetLibraryVersionXDelegate:wrapper_aot_native(對象)'運行時使用 - 僅 - 只。有關更多信息,請參閱http://docs.xamarin.com/ios/about/limitations。
感謝您的幫助。
我有同樣的問題,但它說類型或命名空間UnmanagedFunctionPointer找不到。任何想法? – Darshana