crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Что нужно дописать в опциях компилятора?, подозреваю, что дело в них
Гость_Dmitry_*
сообщение 7.7.2009, 20:30
Сообщение #1





Гости








    


Имеем 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
  опции профиля:
сообщение 7.7.2009, 20:38
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Так а библиотеку boost_thread с программой линкуеш?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Dmitry_*
сообщение 7.7.2009, 21:11
Сообщение #3





Гости








    


Цитата(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_*
сообщение 7.7.2009, 21:37
Сообщение #4





Гости








    


Указал линковщику либу, не сразу, немного пришлось попыхтеть, но заработало.

Т.е. второй вопрос снимается, а вот для чего по 2 одинаковых файла *.lib мне неясно. Сравнил их с помощью comp, они абсолютно идентичны.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 8.7.2009, 8:03
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


С цифарками - чтобы можно было точно указать версию боста.
mt - multi threda
s - вроде бы shared.
Посмотри в доке по системе сборки - это всё детально описано.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Dmitry_*
сообщение 8.7.2009, 8:49
Сообщение #6





Гости








    


Спасибо всем
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 20:59