Правильный способ связать библиотеки?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Правильный способ связать библиотеки?

Сообщение Anonymous »

Я работаю над проектом Android, который создает насыщенные libmain.so с использованием cmake .
В моем cmakelists.txt я связываю Main со многими другими статическими библиотеками, такими как Boost .

Код: Выделить всё

// main CMakeLists.txt
add_library(main SHARED )
target_link_libraries(main boost png xml2)
add_subdirectory(
 /build)
add_subdirectory( /build)
add_subdirectory( /build)
Теперь у меня есть требование добавить еще одну библиотеку зависимостей libxyz чьи файлы cmake предоставляются мне. Их cmake строит libxyz как общую библиотеку. Он также ссылается с Boost библиотекой и общей библиотекой openssl.so

Код: Выделить всё

// libXYZ's CMakeLists.txt
add_library(libXYZ SHARED )
target_link_libraries(libXYZ boost libA)
target_link_libraries(libXYZ  $)
Теперь я хочу связать libxyz.so с моим libmain.so
Итак, в cmakelists моего основного проекта.

Код: Выделить всё

target_link_libraries(main libXYZ boost png xml2)
Я ожидал дублированных ошибок символа, потому что как Main , так и Libxyz ссылка на Boost , но я не получил никаких дублирующих ошибок символа. Когда я изменил Cmake Libxyz , чтобы создать его как статическую библиотеку, я сделал:

Код: Выделить всё

// libXYZ's CMakeLists.txt
add_library(libXYZ STATIC )
После изменения его на Static я получил дублирующую ошибку символа из файлов Boost . Почему дублирующие ошибки символа не были выброшены, когда Libxyz был построен в качестве общей библиотеки? Итак, я удалил импульс из своего основного Cmake и использовал их импульс, и он был хорошо связан. Но когда я загружаю приложение, я получаю, я не могу найти ошибку OpenSsl.SO во время выполнения.
Я хотел спросить, как мне связать библиотеки, чтобы мне приходилось внести минимальные изменения в Cmake Libxyz (потому что он предоставляется третьим лицом), чтобы размер моего приложения не увеличивалось из -за дублирования символов и не загружается без ошибок.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -libraries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»