Лязг и неопределенные символы при создании библиотеки
Я работаю над фреймворком C ++, и есть несколько проблем, когда я компилирую его в OSX с помощью Clang.
Во-первых, я использую некоторые другие библиотеки, такие как openssl, и clang жалуется, что некоторые символы не решаются при сборке библиотеки. Они не должны быть: эти библиотеки будут связаны с окончательным двоичным файлом, это не должно происходить на посреднике.
Кроме того, есть также несколько методов и переменных, которые должны быть реализованы в двоичном «клиенте» ... с GCC, без проблем, но Кланг также жалуется, что эти символы не могут быть решены во время компиляции.
Как так ? Что я должен делать ?
Вот мой CMakeLists.txt в случае, если это может быть полезно:
cmake_minimum_required(VERSION 2.8)
project(crails_project)
set(CMAKE_CXX_FLAGS "-std=c++0x -Wall -Wno-deprecated-declarations -pedantic -DASYNC_SERVER -DSERVER_DEBUG -DUSE_MONGODB_SESSION_STORE")
find_package(cppnetlib REQUIRED)
include_directories(include /usr/local/include ${CPPNETLIB_INCLUDE_DIRS} .)
file(GLOB crails_core
src/*.cpp)
file(GLOB crails_sql
src/sql/*.cpp)
file(GLOB crails_mongodb
src/mongodb/*.cpp)
add_library(crails-core SHARED ${crails_core})
add_library(crails-sql SHARED ${crails_sql})
add_library(crails-mongodb SHARED ${crails_mongodb})
Это команда, которая вылетает:
/usr/bin/c++ -std=c++0x -Wall -Wno-deprecated-declarations -pedantic -DASYNC_SERVER -DSERVER_DEBUG -DUSE_MONGODB_SESSION_STORE -dynamiclib -Wl,-headerpad_max_install_names -o libcrails-core.dylib -install_name /Users/michael/Personal/crails/build/libcrails-core.dylib CMakeFiles/crails-core.dir/src/assets.cpp.o CMakeFiles/crails-core.dir/src/cgi2params.cpp.o CMakeFiles/crails-core.dir/src/cipher.cpp.o [...]
И вот два вида ошибок, которые я получаю:
Неопределенные символы для архитектуры x86_64:
"_BIO_ctrl", referenced from:
Cipher::encode_base64(unsigned char*, unsigned int) const in cipher.cpp.o
И второй:
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for boost::detail::thread_data_base", referenced from:
boost::detail::thread_data_base::thread_data_base() in server.cpp.o