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

Pat*_*Pat 7 c# visual-studio visual-c++ xamarin xamarin.forms

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

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

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

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

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

mfk*_*fkl 0

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

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

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

  • 1 个共享程序集,其中包含所有共享代码、视图和引用您的 .NET 标准库项目。
  • 1 iOS 项目,引用上面的共享 Xamarin.Forms 项目,并具有包含 C++ 代码的 dylib/framework 的本机引用。
  • 1 Android 项目引用上面的共享 Xamarin.Forms 项目,并具有包含 C++ 代码的 .so 二进制文件的本机引用。