繁体   English   中英

如何从C ++为Xamarin.Android创建一个C#DLL

[英]How to create a C# DLL for Xamarin.Android from C++

我有一个使用Xamarin.IOS用C#编写的iPad应用程序,它使用一些C ++代码,这些代码已按照此处的说明内置到C#DLL中。

我现在想要添加我的应用程序的Android版本,所以我需要构建一个兼容的DLL版本。

对于Xamarin.IOS版本,该过程基本上是:

  1. 使用XCode编译C ++代码以生成lib.a文件
  2. SWIG用于从C ++头文件生成一些C#接口文件
  3. XCode从SWIG生成的其中一个文件构建一个libWrapper.a文件
  4. SMCS(似乎是一个Xamarin工具命令行工具)将lib.a,libWrapper.a和AssemblyInfo.cs文件组合成一个C#dll,可以将其添加为iPad项目的参考。

使用已经在Xamarin.Android项目中生成的DLL不起作用(它给出了P / Invoke EntryPointNotFound错误),可能是因为它是为iOS设备(i386,arm7和arm7s)构建的,并且需要针对Android进行不同的构建?

我想我需要使用Android NDK来编译C ++(而不是XCode),但是会产生什么呢?如何将其转换为C#DLL以便将其添加到我的Xamarin.Android项目中?

Android NDK将生成.so文件。 您可以使用与iOS包装器中相同的PInvoke方法。 我之前使用过SWIG和Android,所以不应该有任何区别,因为它是一个C接口。

将.so文件添加到库项目并将其设置为EmbeddedNativeLibrary。

http://developer.xamarin.com/guides/android/advanced_topics/using_native_libraries/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM