Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что нужно дописать в опциях компилятора?
Форум на CrossPlatform.RU > Библиотеки > boost
Dmitry
Имеем Vista+mingw 4.4.0+Netbeans IDE
Собрал boost 1.39
Вроде ошибок bjam не выдал, решил проверить работоспособность, в качестве теста взял пример из wikipedia:
Раскрывающийся текст
#include <boost/thread/thread.hpp>
#include <iostream>

using namespace std;

void hello_world()
{
  cout << "Здравствуй мир, я thread!" << endl;
}

int main(int argc, char* argv[])
{
  // запустить новый поток, вызывающий функцию "hello_world"
  boost::thread my_thread(&hello_world);
  // ждем завершения потока
  my_thread.join();

  return 0;
}


Указал include-директорию C:\boost\include
Указал директорию для lib (опция -L) C:\boost\lib

Как результат получаю:
Раскрывающийся текст
Цитата
Running "C:\msys\1.0\bin\make.exe -f Makefile CONF=Debug" in C:\Users\Dmitry\Documents\NetBeansProjects\test_boost

/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/c/Users/Dmitry/Documents/NetBeansProjects/test_boost'
/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/test_boost.exe
make[2]: Entering directory `/c/Users/Dmitry/Documents/NetBeansProjects/test_boost'
mkdir -p dist/Debug/MinGW-Windows
g++.exe -o dist/Debug/MinGW-Windows/test_boost -s build/Debug/MinGW-Windows/main.o -L/C/boost/lib
build/Debug/MinGW-Windows/main.o: In function `main':

C:\Users\Dmitry\Documents\NetBeansProjects\test_boost/main.cpp:16: undefined reference to `boost::thread::join()'

C:\Users\Dmitry\Documents\NetBeansProjects\test_boost/main.cpp:18: undefined reference to `boost::thread::~thread()'

C:\Users\Dmitry\Documents\NetBeansProjects\test_boost/main.cpp:18: undefined reference to `boost::thread::~thread()'

build/Debug/MinGW-Windows/main.o:c:/boost/include/boost-1_39/boost/thread/win32/thread_primitives.hpp:180: undefined reference to `boost::thread_resource_error::thread_resource_error()'

build/Debug/MinGW-Windows/main.o:c:/boost/include/boost-1_39/boost/thread/win32/thread_primitives.hpp:180: undefined reference to `boost::thread_resource_error::~thread_resource_error()'

build/Debug/MinGW-Windows/main.o: In function `thread<void (*)()>':

c:/boost/include/boost-1_39/boost/thread/detail/thread.hpp:188: undefined reference to `boost::thread::start_thread()'

collect2: ld returned 1 exit status

make[2]: *** [dist/Debug/MinGW-Windows/test_boost.exe] Error 1
make[2]: Leaving directory `/c/Users/Dmitry/Documents/NetBeansProjects/test_boost'
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/c/Users/Dmitry/Documents/NetBeansProjects/test_boost'
make: *** [.build-impl] Error 2

Build failed. Exit value 2.


С частями boost, которые не требуют сборки, проблем нет - все работает.

Что-то уже 2 неделю гуглю, но понять причину проблемы не могу :(
BRE
Так а библиотеку boost_thread с программой линкуеш?
Dmitry
Цитата(BRE @ 7.7.2009, 20:38) *
Так а библиотеку boost_thread с программой линкуеш?

Гм, если судить по выводу Netbeans, получается, что нет. Я, наивный, думал, что указать папку достаточно.

Тогда следующие вопросы:
1. там их 4 файла:
libboost_thread-mgw44-mt-s
libboost_thread-mgw44-mt-s-1_39
libboost_thread-mgw44-mt-sd
libboost_thread-mgw44-mt-sd-1_39
чем они отличаются? d, подозреваю, что это дебаг, а в чем отличия с 1_39 и без? размеры с и без 1_39 одинаковые, файлы с d больше.
2. для линковки надо просто указать компилятору (линковщику) файл *.lib или ключ какой-то требуется?
Dmitry
Указал линковщику либу, не сразу, немного пришлось попыхтеть, но заработало.

Т.е. второй вопрос снимается, а вот для чего по 2 одинаковых файла *.lib мне неясно. Сравнил их с помощью comp, они абсолютно идентичны.
Tonal
С цифарками - чтобы можно было точно указать версию боста.
mt - multi threda
s - вроде бы shared.
Посмотри в доке по системе сборки - это всё детально описано.
Dmitry
Спасибо всем
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.