2017-09-15 7 views
1

私はAndroidに非同期シーンローダーを作成しています。私はstd :: futureとstd :: asyncを使ってiOSにこのローダーを書いています。しかし、Androidでは同じコードが動作していません。次のように 私Scene.hは次のとおりです。私はSTD ::将来をクリックすると未定義テンプレートの暗黙的なインスタンス化 'std :: future <void>' in Android

error: implicit instantiation of undefined template 'std::future<void>' 
      std::future<void> mAsyncSceneLoadingHandler ; 
/usr/local/opt/android-sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/future:114:11: note: template is declared here 
     class future; 

しかし、そのは、適切なヘッダファイルに行く:

#include <future> 
    class Scene 
    { 
     private: 
     std::future<void> mAsyncSceneLoadingHandler ; 
    } 

それはエラーが表示されます。

私はAndroidスタジオを使用しています。私のgradleは次のようになります:

compileSdkVersion 26 
    buildToolsVersion "26.0.1" 
    defaultConfig 
    { 
     applicationId "com.ea.astosh.androidgame" 
     minSdkVersion 22 
     targetSdkVersion 26 
     externalNativeBuild 
     { 
     cmake 
     { 
      cppFlags "-frtti -fexceptions -std=c++11 -latomic" 
     } 
     ndk 
     { 
      stl = "c++_static" 
     } 
    } 
} 

利用可能なすべての回答をチェックしましたが、解決策を見つけることができませんでした。

何かお手伝いいただきありがとうございます。

+0

たぶん、あなたのAndroid SDKには、 'のstd :: future'をサポートしていませんか? sdkヘッダーファイルを見て、実装が見つかりましたか? – Yakk

+0

私はsdkヘッダーファイルを見て、それはstd :: futureの実装を含んでいます。 –

答えて

1

あなたはtell cmakec++_staticを使用する必要があります。

cmake { 
    … 
    arguments '-DANDROID_STL=c++_static' 
} 
+0

ありがとう、私はできるだけ早くそれをチェックします。 –

+1

もう一度ありがとう、それは魔法のように働いた。 –

+0

受け入れることを忘れないでください –

関連する問題