Не удается подключить библиотеку локализации Boost, используя G ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не удается подключить библиотеку локализации Boost, используя G ++

Сообщение Anonymous »

Я пытаюсь собрать проект C ++ с библиотеками локали и файловой системы. < /p>
Вот команда: < /p>

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

g++ czech2017.cpp dist/jsoncpp.cpp dist/sqlite3.o -o czech2017
-LC:\msys64\mingw64\lib -lboost_filesystem -lboost_system
-lboost_locale -lboost_thread
< /code>
Но я получаю следующие ошибки: < /p>
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text+0x965): undefined reference to `boost::locale::generator::generator()'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text+0x9b4): undefined reference to `boost::locale::generator::generate(std::__cxx11::basic_string const&) const'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text+0xa15): undefined reference to `boost::locale::generator::~generator()'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text+0xa3a): undefined reference to `boost::filesystem::path::imbue(std::locale const&)'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text+0xb87): undefined reference to `boost::locale::generator::~generator()'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text$_ZN5boost10filesystem11path_traits7convertEPKcS3_RNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE[_ZN5boost10filesystem11path_traits7convertEPKcS3_RNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE]+0x15): undefined reference to `boost::filesystem::path::codecvt()'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text$_ZN5boost10filesystem11path_traits7convertEPKcS3_RNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE[_ZN5boost10filesystem11path_traits7convertEPKcS3_RNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE]+0x32): undefined reference to `boost::filesystem::path_traits::convert(char const*, char const*, std::__cxx11::basic_string&, std::codecvt const&)'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text$_ZN5boost10filesystem11path_traits7convertEPKwS3_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN5boost10filesystem11path_traits7convertEPKwS3_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x15): undefined reference to `boost::filesystem::path::codecvt()'
C:\Users\usr\AppData\Local\Temp\ccN0DX4g.o:czech2017.cpp:(.text$_ZN5boost10filesystem11path_traits7convertEPKwS3_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN5boost10filesystem11path_traits7convertEPKwS3_RNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x32): undefined reference to `boost::filesystem::path_traits::convert(wchar_t const*, wchar_t const*, std::__cxx11::basic_string&, std::codecvt const&)'
< /code>
Я знаю, что не связываю что -то правильно. Я предполагаю, что у меня нет библиотек, связанных в правильном порядке, но я не знаю надлежащего порядка. Кто -нибудь может помочь? Я создал следующий Cmake: < /p>
cmake_minimum_required(VERSION 3.13)
project(election_results_calculators)
set(CMAKE_CXX_STANDARD 17)

set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB)
find_package(Boost REQUIRED COMPONENTS filesystem system locale thread)

set (ROOT_DIR ..)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(czech2017 ${ROOT_DIR}/tests/czech2017.cpp ${ROOT_DIR}/tests/dist/sqlite3.o ${ROOT_DIR}/tests/dist/jsoncpp.cpp)
target_link_libraries(czech2017 ${Boost_LIBRARIES})
< /code>
и он компилируется. Я получаю ту же ошибку, что и выше, но теперь с немного разными словами: __IMP__ZN5BOOST6LOCALE9GENTATORC1EV 
. Если я составляю программу с грубым аппроксимацией команды компиляции Cmake: g ++. Exe -dboost_all_no_lib -dboost_chrono_dyn_link -dboost_filesystem_dyn_link -dboost_locale_dyn_link -dboost_system_dyn_link -dboost_locale_dyn_link -dboost_system_dyn_link -dboost_locale_dyn_link -dboost_dyn_link_link_link_link_link_link_link_link_link_link_link_link_link_link_link_linc -Dndebug -Std = gnu ++ 17 -o czech2017.exe -c czech2017.cpp он также правильно компилируется, но я получаю сообщение о том, что EXE несовместимо с 64 -битными окнами. Зачем это компилировать, если бы не было?


Подробнее здесь: https://stackoverflow.com/questions/668 ... ry-using-g
Ответить

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

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

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

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

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