我正试图在my library版本中增加对iOS的支持.在库中,我通过DllImport
个属性使用本机二进制文件中的函数.因此,例如:
[DllImport("libraryname")]
private static extern int Foo();
它在Windows(Via libraryname.dll)和MacOS(Via libraryname.dylib)上运行没有任何问题.根据我从the discussion向图书馆用户了解到的情况,我们需要用于iOS的.a文件.用户已经准备了一个简单的测试毛伊岛解决方案:Testify.zip.在第MainPage.xaml.cs条中,我们有这样的宣言:
[DllImport("fat.a", ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
private static extern int Foo();
fat.a就是用这段简单的C代码构建的:
int Foo() { return 234; }
在这里,您可以获得文件:fat.zip.构建过程:
xcrun --sdk iphoneos --verbose clang -c code.c -o code_arm64.o -arch arm64
ar -rv code_arm64.a code_arm64.o
xcrun --sdk iphoneos --verbose clang -c code.c -o code_x86_64.o -arch x86_64
ar -rv code_x86_64.a code_x86_64.o
lipo code_x86_64.a code_arm64.a -output fat.a -create
lipo -info fat.a
此外,该文件被放到Resources/Raw文件夹中,Copy to Output Directory
设置为Copy always
.我们在目标设备或iOS模拟器上的构建包中看到了该文件的适当位置.但是调用Foo
时,我们在运行时得到异常:System.DllNotFoundException: fat.a.请参阅this comment了解更多详细信息.
因此,问题是如何在毛伊岛项目中为iOS使用带有本地二进制文件的DllImport
?这完全有可能吗?