首页 > 解决方案 > 无法在 Android NDK 中使用 C++ 静态变量

问题描述

我有以下 C++ 类Foo.cpp

#include <string>

using namespace std;

class Foo {
public:
    static int bar;

    static void set(int _bar) {
        Foo::bar = _bar;
    }

    static int get() {
        return bar;
    }
};

int Foo::bar;

我想将它包含在我的 NDK 项目中。我想在我的 NDK 端点中访问 Foo::bar ,它实现了本机方法,如下所示:

#include "Foo.cpp"

它们都位于同一个文件夹、同一个库add_library中(CMakeLists.txt 中的 smae 函数)。但是,当我编译代码时,它指出存在multiple definition of Foo::bar,并指向 NDK 端点作为首次定义静态变量的位置。

我确实尝试将整个 Foo 类放在这样的命名空间中:

namespace {
    // The above class Foo here
}

它确实编译但在我启动应用程序后立即退出。如何解决这个问题?谢谢!

我有 Java 背景,所以我希望有类似于“普通”Java 静态的东西。

标签: androidc++staticandroid-ndk

解决方案


推荐阅读