【发布时间】:2014-08-14 18:15:57
【问题描述】:
我有一个使用 Xamarin.IOS 用 C# 编写的 iPad 应用程序,该应用程序使用一些 C++ 代码,这些代码已按照说明 here 内置到 C# DLL 中。
我现在想要添加我的应用程序的 Android 版本,因此我需要构建一个兼容的 DLL 版本。
对于Xamarin.IOS版本,流程本质上是:
- C++ 代码用 XCode 编译成一个 lib.a 文件
- SWIG 用于从 C++ 头文件生成一些 C# 接口文件
- XCode 从 SWIG 生成的文件之一构建 libWrapper.a 文件
- 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 项目中?
【问题讨论】:
标签: c# android xamarin xamarin.android swig