Недавно я перешел с Visual Studio 2010 Express на использование NetBeans, и я уже очень впечатлен компоновкой и простотой, даже если для правильной компиляции потребовалось немного подталкивания. Однако у меня есть другая проблема. Когда я проверил, будет ли boost работать хорошо, я включил файл boost / signal.hpp в main.cpp, а затем перешел в дополнительные каталоги библиотек в настройках проекта и добавил каталог lib моей установки boost, такой же, как Я бы сделал в визуальной студии. После всего этого я все равно получаю кучу неопределенных ссылок.
Я использую компилятор mingw с msys, и у меня есть повышение версии 1.47, если это имеет какое-то значение. Я могу подтвердить, что эта же установка Boost отлично работает при использовании Visual Studio.
Вот журнал сборки.
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory m`/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/syncopate5.exe
make[2]: Entering directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
mkdir -p dist/Debug/MinGW-Windows
g++.exe -o dist/Debug/MinGW-Windows/syncopate5 build/Debug/MinGW-Windows/main.o -L/C/Program\ Files\ \(x86\)/boost/boost_1_47/lib
build/Debug/MinGW-Windows/main.o: In function `ZN5boost7signal0IvNS_10last_valueIvEEiSt4lessIiENS_8functionIFvvEEEED2Ev':
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:139: undefined reference to `boost::signals::trackable::~trackable()'
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:139: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
make[2]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:139: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
make[1]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
build/Debug/MinGW-Windows/main.o: In function `ZN5boost7signal0IvNS_10last_valueIvEEiSt4lessIiENS_8functionIFvvEEEEC2ERKS2_RKS4_':
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:197: undefined reference to `boost::signals::detail::signal_base::signal_base(boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group> const&, boost::any const&)'
C:\Users\me\Documents\NetBeansProjects\Syncopate5\Syncopate5/../../../../../../Program Files (x86)/boost/boost_1_47/boost/signals/signal_template.hpp:197: undefined reference to `boost::signals::detail::signal_base::~signal_base()'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [dist/Debug/MinGW-Windows/syncopate5.exe] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
Редактировать:
После попытки добавить требуемый файл lib вручную через диалог добавления библиотек в свойствах проекта, я получаю эту ошибку.
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/syncopate5.exe
make[2]: Entering directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
make[2]: *** No rule to make target `../../../../../../Program Files \(x86\)/boost/boost_1_47/lib/libboost_signals-vc100-mt-1_47.lib', needed by `dist/Debug/MinGW-Windows/syncopate5.exe'. Stop.
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
make[1]: Leaving directory `/c/Users/me/Documents/NetBeansProjects/Syncopate5/Syncopate5'
BUILD FAILED (exit value 2, total time: 9s)
Это зависит от того, как вы построили проект.
Если вы собрали проект из существующего make-файла, ваши пути к библиотекам и библиотеки должны присутствовать в среде сборки.
Если вы создали проект вручную, поочередно объединяя исходные тексты, include и библиотеки, вам потребуется эксплицитно добавьте библиотеки, которые вы хотите.
В частности, глядя на ваш обновленный журнал сборки, кажется, что вы не соединение необходимую библиотеку и вместо этого добавил как цель как-то.
Щелкните правой кнопкой мыши по вашему проекту, перейдите к Properties
, под Build
вкладка взгляд в сторону Linker
Здесь вы должны указать путь ссылки и динамические / статические библиотеки.
После нескольких часов поисков и поиска я узнал немного больше о повышении и, наконец, нашел и понял свою проблему. Когда я первоначально получил свою установку boost, он был от BoostPro, в котором есть все объекты только для заголовков, а также предварительно скомпилированные двоичные файлы только для vc ++. После получения самой последней версии boost и boost.build для создания версий библиотек gcc и создания ссылок на них все работало без сбоев. Спасибо Тайлеру Жандро и Иоахиму Пилеборгу за ответ на мой изначально некорректный вопрос: