struct S1{...};
extern "C" struct S1 *f();
extern "C" void freeS1(struct S1 *ptr);
Run Code Online (Sandbox Code Playgroud)
extern "C" struct S1 *f() {
struct S1 *ptr = new struct S1();
...
return ptr;
};
extern "C" void freeS1(struct S1 *ptr) {
delete ptr;
};
Run Code Online (Sandbox Code Playgroud)
struct S1 *ptr = f();
.....
freeS1(ptr);
Run Code Online (Sandbox Code Playgroud) 我构建了一个库(.so),在某些 Android 应用程序中从 JNI 代码调用该库。JNI 代码是使用 NDK 构建的。
如果我使用 android 工具链构建该库,则该库在从 JNI 代码调用时运行良好。
如果我使用另一个工具链(在同一 ARM 设备上用于非 Android 应用程序)构建库,则从 JNI 代码调用时该库会崩溃。
为什么我们需要使用 android 工具链(或 NDK)来编译在 android 应用程序上下文中运行的 c/c++ 代码?为什么不使用其他工具链?