# C++ 库

> 参考 C++ 库指南将 Tapjoy 集成到 Cocos2d-x 或其他原生 C++ 游戏项目中。

Unity Offerwall 在使用 Android NDK 和 C++ 的开发环境（例如 Cocos2d-x）中提供了一个 C++ API。

Tapjoy Android SDK 提供的 C++ API 与 Tapjoy iOS SDK 的 C++ API 兼容。

## NDK 模块##ndk-modules

Offerwall SDK 中包含一个提供 C++ 头文件和库的 NDK 模块。请添加 Tapjoy NDK 模块的路径作为 NDK\_MODULE\_PATH。

```java title="Java"
ndk-build NDK_MODULE_PATH=../../TapjoySDK_Android/Library/modules
```

## Cocos2dx##cocos2dx

向 `proj.android/build_native.sh` 添加用冒号 (:) 分隔的 `NDK_MODULE_PATH`：

```java title="Java"
 # proj.android/build_native.sh
...
if [[ "$buildexternalsfromsource" ]]; then
    echo "Building external dependencies from source"
    "$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
       "NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/source:../../TapjoySDK_Android/Library/modules"
else
    echo "Using prebuilt externals"
    "$NDK_ROOT"/ndk-build -C "$APP_ANDROID_ROOT" $* \
       "NDK_MODULE_PATH=${COCOS2DX_ROOT}:${COCOS2DX_ROOT}/cocos2dx/platform/third_party/android/prebuilt:../../TapjoySDK_Android/Library/modules"
fi
```

使用以下模块之一：

## 静态库模块##static-library-module

将应用程序库链接到静态库模块。

添加 fiverocks\_static 模块：

在应用项目中，将 tapjoy\_static 模块添加到构建 Tapjoy API 集成源代码的 Android.mk 文件中。

```java title="Java"
make
 ...
 include $(CLEAR_VARS)
 ...
 LOCAL_STATIC_LIBRARIES := tapjoy_static
 ...
 include $(BUILD_SHARED_LIBRARY)
 ...
 $(call import-module,tapjoy)
 ...
```

提供 JavaVM：

`tapjoy_static` 模块需要一个 JavaVM 对象。找到 `JNI_OnLoad` 的函数定义并添加 `Tapjoy::setJavaVM` 方法：

```java title="Java"
  #include "TapjoyCpp.h" // Tapjoy C++ API
 ...
 jint JNI_OnLoad(JavaVM *vm, void *reserved) {
     ...
     JniHelper::setJavaVM(vm);
     tapjoy::Tapjoy::setJavaVM(vm);
     ...
 }
```

## 共享库模块##shared-library-module

还可以使用共享库模块。此模块不需要 JavaVM。

添加 `tapjoy_shared` 模块：

在应用项目中，将 `tapjoy_shared` 模块添加到构建 Tapjoy API 集成源代码的 Android.mk 文件中。

```java title="Java"
make
...
include $(CLEAR_VARS)
...
LOCAL_SHARED_LIBRARIES := tapjoy_shared
...
include $(BUILD_SHARED_LIBRARY)
...
$(call import-module,tapjoy)
...
```

解决共享库模块的依赖问题：
在加载使用 Tapjoy 库的应用程序库之前，调用 `Tapjoy.loadSharedLibrary()`：

```java title="Java"

import com.tapjoy.Tapjoy;

  static {
    Tapjoy.loadSharedLibrary();
    System.loadLibrary("YourAppLibrary");
  }
```

## C++ API##c++-api

使用 `TapjoyCpp.h` 头文件：

```java title="Java"

 #include "Tapjoy/TapjoyCpp.h" // Tapjoy C++ API

using namespace tapjoy;

  Tapjoy::trackEvent("some event");
```

## 隐私##privacy

如需查看完整详细信息，请点击[此处](../advanced/user-privacy)。

### API##api

```cpp
TJPrivacyPolicyHandle policyHandle;
policyHandle = TJPrivacyPolicy::getPrivacyPolicy();
TJPrivacyPolicy::subjectToGDPR(policyHandle,true);
TJPrivacyPolicy::setUserConsent(policyHandle, "1″);
TJPrivacyPolicy::setUSPrivacy(policyHandle, "1YNY");
TJPrivacyPolicy::belowConsentAge(policyHandle, true);
```
