0

我想创建一个包含某些函数定义的 dll。我将能够在 Objective-c 和 java 环境中使用这些函数。

甚至有可能做到这一点吗?

谢谢!

4

2 回答 2

1

用 C 或 C++ 编写。您将能够通过 Objective C++ 的魔力将其链接到 Objective C/Cocoa,并通过 NDK 和 JNI 将其链接到 Android 上的 Java。这就是我在我的项目中所做的。在这两种情况下,编译器都是 GCC,RTL 不相同但足够相似。

避免在接口中使用毛茸茸的数据结构,坚持使用原语和原语数组。而且,很自然,您可能需要抽象出一些平台。

您可能希望使用 -fshort-wchar 编译您的代码。碰巧这short是 Cocoa 和 JNI 中的本机字符格式。虽然你会失去 RTL 的宽字符串函数,但无论如何它们对 Cocoa 字符串和 Java 字符串都没有用。或者您可以在库/平台边界上使用 UTF-8。每次调用的转换开销,yadda yadda。

注意:如果你只是想重用一些次要的辅助函数,写两次会更容易,或者复制/粘贴然后调整语法。调试 NDK 代码是出了名的棘手。仅当共享位构成项目的 25-30% 或更多时才采用这种方式。就我而言,它更像是 60% 共享。

编辑:如果您采用这种方式,那么进一步移植到其他移动平台将是一件轻而易举的事情,而且有些——不是那么多。具体来说:

  • 三星 bada - snap(也是带有 GCC 的 C++,耶)
  • Mobile Qt (Meego, etc) - snap (同上)
  • Windows Mobile 6.5 及以下 - 相对容易(GCC 和 MSVC 之间的编译器差异可能会妨碍)
  • Windows 8 平板电脑(又名 WinRT,Metro)- 同上
  • Blackberry Playbook - 理论上可行,从未尝试过
  • 老派黑莓 - 不可能,全是 Java
  • Windows Phone 7 - 不可能,全是 C#/VB.NET
于 2012-06-07T15:21:50.660 回答
1

如果您想为 iOS 和 Android 创建应用程序并且想重用应用程序的业务逻辑(而不是 UI),请查看Xamarin

您可以使用C#进行开发并创建 Android 和/或 iOS 应用程序。

来自 Xamarin 网站:

通过在 iOS 和 Android 之间共享数据结构和非 UI 代码来节省时间。

希望能帮助到你。

于 2012-06-07T15:12:24.933 回答