我用MAUI开发了一个iOS应用程序,并且有一个用于iPhone的条形码扫描仪设备。要使用此设备,我需要添加一个使用Xamarin. iOS的dll。当我将此dll添加到主项目时,它需要Xamarin.iOS.dll,当我将Xamarin.iOS.dll添加到项目时,我得到以下错误
NSData有一个冲突,不幸的是我不能使用Xamarin.iOS的NSData.像Xamarin.iOS.Foundation.NSData
所以作为一种替代,我创建了另一个类库(这不是一个maui类库)。我添加了Xamarin.iOS和设备的DLL到这个项目中,我可以成功编译。
但是当我将这个类库添加到Maui应用程序项目中时,我在构建时得到以下错误
/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk/16.2.1007/targets/Xamarin.Shared.Sdk.targets(3,3):
Error: clang++ exited with code 1:
Undefined symbols for architecture arm64:
"_xamarin_IntPtr_objc_msgSendSuper_IntPtr", referenced from:
-u command line option
(maybe you meant: _xamarin_IntPtr_objc_msgSendSuper_IntPtr_ref_IntPtr_exception,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_IntPtr_int_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_int_int_int_int_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_Int64_Int64_Int64_Int64_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_UIntPtr_IntPtr_IntPtr_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_UInt64_Int64_Int64_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr_IntPtr_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_UInt32_int_int_exception ,
_xamarin_IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr_exception )
"_xamarin_IntPtr_objc_msgSendSuper_IntPtr_IntPtr_UInt32", referenced from:
-u command line option
"_xamarin_IntPtr_objc_msgSendSuper_IntPtr_IntPtr_UInt64", referenced from:
-u command line option
"_xamarin_Int (TestMauiApp)
除此之外,当我将设备的DLL添加到maui项目中并从Link behavior中选择“Link All”时,项目可以编译并部署到我的手机上,但当我打开应用程序时,我看到屏幕截图,然后应用程序崩溃。甚至项目中没有任何代码。
不幸的是,设备制造商现在不支持MAUI。https://asreader.com/products/asr-023xd/支持的:objective C,swift,cordova和xamarin。我不确定我是否可以将objective-c/swift库嵌入到我的项目中。
如果我能用Xamarin解决这个问题,那就太好了。否则我就不得不用Xamarin.Forms而不是MAUI。
1条答案
按热度按时间w80xi6nr1#
这似乎是一个Xamarin.iOS Binding项目。Xamarin.iOS Binding项目旨在将Objective-C代码暴露给Xamarin的C#代码库,并且与iOS和MAUI的.NET不向前兼容。
这些项目需要首先转换为较新的.NET for iOS Binding项目类型。目前需要手动完成。一种方法是创建一个“iOS Binding Project”,如下所示:
dotnet new iosbinding -o MyBinding
(将MyBinding替换为您希望的绑定名称)。ApiDefinition.cs
、StructsAndEnums.cs
、.a
和/或.framework
文件和目录、任何本机引用、其他设置和资源从原始Xamarin.iOS绑定到新的绑定项目。(确保SmartLink、ForceLoad等。NativeReferences的设置与原始绑定项目的设置相匹配)注意:如果引用的是生成的DLL,而不是绑定项目本身,请确保生成的
BindingName.resources
文件夹在同一目录下