Встраивание OpenCV в статическую библиотеку приводит к отсутствию функцийC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Встраивание OpenCV в статическую библиотеку приводит к отсутствию функций

Сообщение Anonymous »

Я создаю статическую библиотеку c/c++ для iOS или Android. Раньше я создавал динамическую библиотеку, используя ключевое слово SHARED, и все работало нормально. Я кросс-компилировал openCV для обеих версий (android и ios) и использую локальную версию. Я запустил соответствующие платформы/ios/build_framework.py и Platform/android/build_sdk.py. Запуск опции --help также говорит, что статическая версия создается по умолчанию. Это мой файл CMakeLists.txt, который я использую для создания версии STATIC. Для SHAREDя заменил только ключевое слово.

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

cmake_minimum_required(VERSION 3.0)

# for android I use my android toolchain file of course
set(CMAKE_TOOLCHAIN_FILE ios.toolchain.cmake)

project(mylibrary)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(OpenCV_DIR ${CMAKE_CURRENT_LIST_DIR}/opencv/opencv/build/ios/opencv2.framework)
include_directories("${OpenCV_DIR}/Headers")
link_directories("${OpenCV_DIR}")

# find header & source
file(GLOB_RECURSE SOURCE_C "src/*.c")
file(GLOB_RECURSE SOURCE_CPP "src/*.cpp")
file(GLOB_RECURSE HEADER_H "src/*.h")
file(GLOB_RECURSE HEADER_HPP "src/*.hpp")

add_library(${PROJECT_NAME} STATIC
${SOURCE_C}
${SOURCE_CPP}
${HEADER_H}
${HEADER_HPP}
)

# currently not used
# set_target_properties(${PROJECT_NAME} PROPERTIES
# COMPILER_FLAGS "-arch arm64 -std=c++11"
# )

# opencv package
target_link_libraries(${PROJECT_NAME} PRIVATE "${OpenCV_DIR}/opencv2")

set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-v")

# includes
source_group("Header include" FILES ${HEADER_H})
source_group("Header include" FILES ${HEADER_HPP})
source_group("Source src" FILES ${SOURCE_C})
source_group("Source src" FILES ${SOURCE_CPP})
Когда я создаю свое приложение, я получаю сообщение об ошибке, что функция openCV, которую я использую medianBlur, не определена:

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

Undefined symbols for architecture arm64
Symbol: cv::medianBlur(...)
Referenced frin: myfunc in mylibrary.a ...
Также, когда я проверяю nm mylibrary.a | grep medianBlur Я получаю только неопределенное U _YN2cv10medianBlurERKNS_11_InputArrayERKNS_12_OutputArrazEi как для Android, так и для iOS. Запустив эту команду в динамических библиотеках, я получаю T в обоих случаях.
Как мне встроить opencv в мою статическую библиотеку, чтобы можно было найти все функции?


Подробнее здесь: https://stackoverflow.com/questions/793 ... -functions
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?
    Гость » » в форуме C++
    0 Ответы
    45 Просмотры
    Последнее сообщение Гость
  • OpenGL ES, слишком раннее заполнение VBO и IBO приводит к отсутствию буферов?
    Гость » » в форуме C++
    0 Ответы
    37 Просмотры
    Последнее сообщение Гость
  • Растворение полигонов в Python приводит к отсутствию некоторых полигонов.
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\src\.cpp:660: ошибка: (-215: утверждение не вып
    Anonymous » » в форуме Python
    0 Ответы
    131 Просмотры
    Последнее сообщение Anonymous
  • Закрытие Shell приведет к отсутствию событий
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

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