gpt4 book ai didi

c# - 如何从 C++ 为 Xamarin.Android 创建 C# DLL

转载 作者:太空狗 更新时间:2023-10-29 15:02:21 25 4
gpt4 key购买 nike

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

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

对于 Xamarin.IOS 版本,流程本质上是:

  1. C++代码用XCode编译成lib.a文件
  2. SWIG 用于从 C++ 头文件生成一些 C# 接口(interface)文件
  3. XCode 从 SWIG 生成的文件之一构建一个 libWrapper.a 文件
  4. SMCS(好像是Xamarin tool命令行工具)将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 方法。我之前在 Android 中使用过 SWIG,所以应该没有任何区别,因为它是 C 接口(interface)。

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

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

关于c# - 如何从 C++ 为 Xamarin.Android 创建 C# DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25314883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com