2013-10-11 1 views
1
obj\Debug\src\SQLite3DB.o||In function _static_initialization_and_destruction_0:| 
D:\workspace-cpp\boost_1_54_0_beta1\boost\system\error_code.hpp|222|undefined reference to boost::system::generic_category()| 
D:\workspace-cpp\boost_1_54_0_beta1\boost\system\error_code.hpp|223|undefined reference to boost::system::generic_category()| 
D:\workspace-cpp\boost_1_54_0_beta1\boost\system\error_code.hpp|224|undefined reference to boost::system::system_category()| 
||=== Build finished: 3 errors, 0 warnings (0 minutes, 4 seconds) ===| 

Выше мое полное сообщение об ошибке после включения boost/filesystem.hpp к моему проекту. Я видел несколько сообщений, в которых говорилось, что добавление -lboost_system может решить это, но я не знаю, где это сделать в CodeBlocks!
Я уже потратил один день на решение этой проблемы. Спасибо за вашу помощь!Неопределенная ссылка на «повышение :: системы :: system_category()»

+0

возможно дубликат [? Как связать в библиотеку с Code :: Blocks] (http://stackoverflow.com/questions/5862757/how-do-i-link-to- a-library-with-codeblocks) –

+0

Я просто добавляю -lboost_system в компоновщик, но он выдает эту ошибку «Нет такого файла или указателя». Что мне делать? – yphs

ответ

2

Щелкните правой кнопкой мыши на названии проекта; нажмите «Параметры сборки ...»; перейдите в «Настройки компоновщика»; нажмите «Добавить»; найдите библиотеку и добавьте ее.

enter image description here enter image description here enter image description here enter image description here

Кроме того, вы можете добавить некоторые пользовательские переменные, чтобы облегчить управление отладки/выпуска и 32/64-битных вариантов целевых. Я оставлю это вам.


EDIT

Вот ошибочный код от error_code.hpp:

# ifndef BOOST_SYSTEM_NO_DEPRECATED 
    inline const error_category & get_system_category() { return system_category(); } 
    inline const error_category & get_generic_category() { return generic_category(); } 
    inline const error_category & get_posix_category() { return generic_category(); } 
    static const error_category & posix_category = generic_category(); 
    static const error_category & errno_ecat  = generic_category(); 
    static const error_category & native_ecat = system_category(); 
# endif 

Как вы можете видеть, определяя BOOST_SYSTEM_NO_DEPRECATED отключит его. Я тестировал это, и он работает. Это составляет:

#define BOOST_SYSTEM_NO_DEPRECATED 
#include <boost/system/error_code.hpp> 

int main(void) 
{ 

} 
+0

.. \ .. \ .. \ .. \ Boost \ 1_54_0 \ VC \ 11.0 \ bin.v2 \ libs \ system \ build \ msvc-11.0 \ debug \ link-static \ threading-multi \ libboost_system-vc110-mt -gd-1_54.lib - после того, как я добавлю это в настройку компоновщика, он все равно получит ту же ошибку! – yphs

+0

@ user2344692: Я обновил ответ. – hauzer