2017-11-30 13 views
1

です。私はJNIをc/C++コードを使って編集しますが、別のlib.aを使ってc/C++コードを編集するとどうすればCMakeList.txtを編集できますか?enter image description hereアンドロイドスタジオではc/C++をビルドするためにJNIを使​​用していますが、C/C++では別のlib.aが必要ですが、解決方法はアンドロイドスタジオについて

これはプロジェクトを作るとき私のCMakeList.txt です。それはについて言う "/../../mips64el-linux-android/bin\ld:-lwebsockets見つけることができない"

cmake_minimum_required(VERSION 3.4.1) 

aux_source_directory(src/main/cpp/android_src/common FILE_COMMON) 
aux_source_directory(src/main/cpp/android_src FILE_SRC) 
aux_source_directory(src/main/cpp/ FILE_CPP) 
SET(ALL_FILE ${FILE_CPP} ${FILE_SRC} ${FILE_CPP}) 

INCLUDE_DIRECTORIES(src/main/cpp/cpp_include) 
#LINK_DIRECTORIES(src/main/cpp/cpp_lib) 
add_library(websockets STATIC IMPORTED) 
set_target_properties(websockets PROPERTIES IMPORTED_LOCATION src/main/cpp/cpp_lib/libwebsockets.a) 

add_library(# Sets the name of the library. 
      #native-lib 
      SkylightWebSocket 

      # Sets the library as a shared library. 
      SHARED 

      # Provides a relative path to your source file(s). 
      #src/main/cpp/native-lib.cpp 
      ${ALL_FILE}) 


find_library(# Sets the name of the path variable. 
       log-lib 

       # Specifies the name of the NDK library that 
       # you want CMake to locate. 
       log) 

target_link_libraries(# Specifies the target library. 
         #native-lib 
         SkylightWebSocket 

         # Links the target library to the log library 
         # included in the NDK. 
         libwebsockets.a ${log-lib}) 

答えて

0

代わりの libwebsockets.a target_link_libraries()文でWebSocketをを使用します。

add_library(Q STATIC IMPORTED) 
set_target_properties(Q PROPERTIES IMPORTED_LOCATION src/main/cpp/cpp_lib/libwebsockets.a) 

add_library(# Sets the name of the library. 
     #native-lib 
     SkylightWebSocket 

     # Sets the library as a shared library. 
     SHARED 

     # Provides a relative path to your source file(s). 
     #src/main/cpp/native-lib.cpp 
     ${ALL_FILE}) 

target_link_libraries(# Specifies the target library. 
        #native-lib 
        SkylightWebSocket 

        # Links the target library to the log library 
        # included in the NDK. 
        Q log) 

注NDKで、ログライブラリが定義されている、あなたはまったくfind_libraryを必要としないこと:ここでは、それが簡単に理解できるようにする

は、編集したスクリプトです。

+0

ありがとうございました!しかし、それは動作しませんでした。新しいエラーがあります:エラー: 'src/main/cpp/cpp_lib/libwebsockets.a'、 '../../../../build/intermediates/cmake/debug/obj/mips64/libSkylightWebSocket'に必要です。 .so '、行方不明、それを作る既知のルールなし –

+0

ありがとう!しかし、それは動作しませんでした。新しいエラーがあります: {エラー: 'src/main/cpp/cpp_lib/libwebsockets.a'、 '../../../../build/intermediates/cmake/debug/obj/mips64'に必要です。 /libSkylightWebSocket.so '、欠けているルールはありません}しかし、libwebsockts.aは作成する必要はありません。すでに静的なlib(libwebsockets.a)です。何か間違っていますか? –

+0

**あなたはあなたの** abiFilters **を調整する必要があります。事前ビルドされたライブラリがサポートしているABIを確認してください。 libwebsockets.aファイルに関しては、それを探してパスを修正してください。 '知られていないルールは、あなたが提供したパスが間違っていることを意味します。 –

関連する問題