Я работаю на Android родной проект, в котором я использую NDK + CMake для создания собственного решения, основанного на POCO C ++. Я получаю очень странные ошибки ссылки, когда я закомментировать эту строку в моем файле CPP:
//std::ostream& o = session.sendRequest(request);
это ошибка ссылки:
../NetSSL_OpenSSL/src/SecureSocketImpl.cpp:381: Ошибка: неопределенная ссылка на 'Poco :: Net :: SocketAddress :: ~ SocketAddress ()'
Но еще более странно, что файл с объектом, где sendRequest
помещают его не включаются в любом другом файле. Итак, у меня есть один выделенный файл (заголовок и реализация), который не включен в любой другой файл (но это сборка с CMake, я не могу удалить его из-за вопроса), и если я комментарий <сильный> одна строка сильный > реализации, она порождает проблему связи.
Вот как я связываю Poco:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_COMPILER_VERSION "5.0") # Unknown miss-detection of the compiler by CMake
find_library( # Defines the name of the path variable that stores the
# location of the NDK library.
log-lib
# Specifies the name of the NDK library that
# CMake needs to locate.
log )
add_library(PocoFoundation STATIC IMPORTED)
set_target_properties(PocoFoundation PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoFoundation.a)
add_library(PocoNet STATIC IMPORTED)
set_target_properties(PocoNet PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoNet.a)
add_library(PocoJSON STATIC IMPORTED)
set_target_properties(PocoJSON PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoJSON.a)
add_library(PocoNetSSL STATIC IMPORTED)
set_target_properties(PocoNetSSL PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoNetSSL.a)
add_library(PocoCrypto STATIC IMPORTED)
set_target_properties(PocoCrypto PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoCrypto.a)
add_library(PocoUtil STATIC IMPORTED)
set_target_properties(PocoUtil PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoUtil.a)
add_library(PocoXML STATIC IMPORTED)
set_target_properties(PocoXML PROPERTIES IMPORTED_LOCATION
/Users/user/dev/poco-2/install/lib/libPocoXML.a)
// ... SOURCES ...
target_include_directories(mylib PRIVATE /Users/user/dev/poco-2/install/include)
target_link_libraries(mylib
PocoNet
PocoNetSSL
PocoUtil
PocoJSON
PocoCrypto
PocoXML
PocoFoundation
Ssl
Crypto
${log-lib})
Кроме того, я использую Android Studio 3.6.2 с NDK версии r19c. Я пробовал очистить сборку, перестроить и очистить .cxx, .gradle и папку сборки.
Любая идея?