我想创建一个包含某些函数定义的 dll。我将能够在 Objective-c 和 java 环境中使用这些函数。
甚至有可能做到这一点吗?
谢谢!
我想创建一个包含某些函数定义的 dll。我将能够在 Objective-c 和 java 环境中使用这些函数。
甚至有可能做到这一点吗?
谢谢!
用 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% 共享。
编辑:如果您采用这种方式,那么进一步移植到其他移动平台将是一件轻而易举的事情,而且有些——不是那么多。具体来说:
如果您想为 iOS 和 Android 创建应用程序并且想重用应用程序的业务逻辑(而不是 UI),请查看Xamarin。
您可以使用C#进行开发并创建 Android 和/或 iOS 应用程序。
来自 Xamarin 网站:
通过在 iOS 和 Android 之间共享数据结构和非 UI 代码来节省时间。
希望能帮助到你。