首页 文章

如何使用C非托管库在Visual Studio 2017中为Xamarin.Forms设置项目?

提问于
浏览
8

我的项目针对Android和iOS平台 .

我需要在C库周围创建一个本机C库(可移植),一个C#包装器库(dll),最后使用这些库创建一个Xamarin.Forms演示应用程序 . 本机和包装库是可交付的,演示应用程序用于概念验证 .

我完全安装了Visual Studio 2017,但似乎无法找到正确设置的所有引用的项目类型的正确组合 .

我应该如何在Visual Studio 2017中进行设置?

我不介意设置众多项目 . 我主要担心的是尽可能多地共享代码 .

1 回答

  • 0

    为每个平台编译C lib(例如clang / gcc) . 那应该在Android和mylib.dylib(或mylib.framework,如果你打算在App Store推送它)上提供mylib.so . 您的C应使用 extern C 来公开API . 这部分与VS模板/项目无关,您只需要正确的二进制文件 .

    创建.NET标准2.0库项目 . 使用 <TargetFrameworks>MonoAndroid8.1;Xamarin.iOS10;netstandard2.0</TargetFrameworks> 使用多目标广告 . 如果您需要有关设置的示例,请在GitHub上查找跨平台项目 . 这里的C#代码将使用P / Invoke来调用C并处理编组以公开C#友好的API . 再次,在GitHub上查看流行库的包装器 .

    然后,您需要创建一个包含3个项目的Xamarin.Forms项目:

    • 1与所有共享代码和视图共享程序集并引用.NET标准库项目 .

    • 1 iOS项目,它引用上面的共享Xamarin.Forms项目,并具有包含C代码的dylib /框架的本机引用 .

    • 1 Android项目,它引用上面的共享Xamarin.Forms项目,并具有包含C代码的.so二进制文件的本机引用 .

相关问题