Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Linking target libraries from different tree branch
Forum Updated to NodeBB v4.3 + New Features

Linking target libraries from different tree branch

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
andoid x86cmakeqt6
2 Posts 1 Posters 342 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    AkshayFP
    wrote on 16 Jan 2022, 21:02 last edited by AkshayFP
    #1

    I am trying to build a Qt for Android application and I have a root project that looks like this:

    root
    |
    |- CMakeList.txt
    |- Project_A <- shared object
    |  `- CMakeList.txt
    `- Project_B <- actual app
       `- CMakeList.txt
    

    Now, Project_B depends on Project_A. Project_A builds the a shared object - libProject_A_x86_64.so.

    In Project_B, I have the following configurations:

    ...
    target_include_directories(cook-ui-modular-qt PUBLIC
        ../Project_A
    )
    
    if(ANDROID)
        set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android" CACHE INTERNAL "")
        set(LIBS ${CMAKE_BINARY_DIR}/Project_A/libProject_A_${ANDROID_ABI}.so)
    
        target_link_libraries(root PUBLIC ${LIBS})
        set(ANDROID_EXTRA_LIBS ${LIBS} CACHE INTERNAL "")
    endif()
    ...
    

    Even though have these linked, I still get the following error:

    E AndroidRuntime: FATAL EXCEPTION: qtMainLoopThread
    E AndroidRuntime: Process: org.qtproject.example.cook_ui_modular_qt, PID: 3484
    E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libProject_A_x86_64.so" not found: needed by /data/app/~~z1ZkaaXPy7l45CcQdoiWxA==/org.qtproject.example.cook_ui_modular_qt-piF9pyelBLjV1RLkvk0wIA==/lib/x86_64/libcook-ui-modular-qt_x86_64.so in namespace classloader-namespace
    E AndroidRuntime: 	at java.lang.Runtime.load0(Runtime.java:939)
    E AndroidRuntime: 	at java.lang.System.load(System.java:1628)
    E AndroidRuntime: 	at org.qtproject.qt.android.QtNative$4.run(QtNative.java:516)
    E AndroidRuntime: 	at org.qtproject.qt.android.QtThread$2.run(QtThread.java:87)
    E AndroidRuntime: 	at org.qtproject.qt.android.QtThread$1.run(QtThread.java:61)
    E AndroidRuntime: 	at java.lang.Thread.run(Thread.java:923)
    

    This basically means that the libProject_A_x86_64.so is not found. I am not sure how to make this file available to the apk. Any help on this would be appreciated.

    1 Reply Last reply
    0
    • A Offline
      A Offline
      AkshayFP
      wrote on 17 Jan 2022, 00:59 last edited by
      #2

      A hack that I had to do for this to work is to manually copy the so file.

      if(ANDROID)
          add_custom_command(TARGET cook-ui-modular-qt POST_BUILD
              COMMAND ${CMAKE_COMMAND} -E copy
              ${CMAKE_BINARY_DIR}/App/ConnectedSocket/libConnectedSocket_${ANDROID_ABI}.so
              ${CMAKE_BINARY_DIR}/App/UserInterface/android-build/libs/${ANDROID_ABI}/libConnectedSocket_${ANDROID_ABI}.so
              )
      endif()
      

      This is obviously not the right way to do it. But I don't know how to do it the right way

      1 Reply Last reply
      0

      1/2

      16 Jan 2022, 21:02

      • Login

      • Login or register to search.
      1 out of 2
      • First post
        1/2
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved