# C++ 라이브러리

> C++ 라이브러리 가이드를 사용하여 탭조이를 Cocos2d-x나 기타 네이티브 C++ 게임 프로젝트에 연동합니다.

Unity Offerwall은 Android NDK와 C++를 사용하는 개발 환경(예: Cocos2d-x)에 C++ API를 제공합니다.

탭조이의 Android SDK에서 제공하는 C++ API는 탭조이의 iOS SDK에 있는 C++ API와 호환됩니다.

## NDK 모듈##ndk-modules

Offerwall SDK에는 C++ 헤더 파일과 라이브러리를 제공하는 NDK 모듈이 포함되어 있습니다. 탭조이의 NDK 모듈 경로를 NDK\_MODULE\_PATH로 추가합니다.

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

## Cocos2dx##cocos2dx

콜론(:)으로 구분된 `NDK_MODULE_PATH`를 `proj.android/build_native.sh`에 추가합니다.

```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 API 연동 소스 코드를 빌드하는 Android.mk 파일에 tapjoy\_static 모듈을 추가합니다.

```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 API 연동 소스 코드를 빌드하는 Android.mk 파일에 `tapjoy_shared` 모듈을 추가합니다.

```java title="Java"
make
...
include $(CLEAR_VARS)
...
LOCAL_SHARED_LIBRARIES := tapjoy_shared
...
include $(BUILD_SHARED_LIBRARY)
...
$(call import-module,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);
```
