Я использую MinGw на Windows 7. Следующая простая программа компилируется нормально, но компоновщик жалуется, и я не понимаю, в чем дело:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int> iv;
iv.push_back(7);
cout << iv.back() << endl;
return 0;
}
сообщения компилятора / компоновщика выглядят следующим образом:
mingw32-g++.exe -Wall -fexceptions -std=c++0x -Wall -g -std=c++0x -Wall -g -frepo -IC:\cppbuchincludes\include -IG:\Boost -IG:\Users\thomas\cpp\STLUsage\\include -c G:\Users\thomas\cpp\STLUsage\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -o bin\Debug\STLUsage.exe obj\Debug\main.o G:\Boost\stage\lib\libboost_filesystem-mgw45-mt-d-1_45.dll.a G:\Boost\stage\lib\libboost_regex-mgw45-mt-d-1_45.dll.a G:\Boost\stage\lib\libboost_system-mgw45-mt-d-1_45.dll.a G:\Boost\stage\lib\libboost_thread-mgw45-mt-1_45.dll.a G:\Boost\stage\lib\libboost_unit_test_framework-mgw45-mt-d-1_45.dll.a
collect: recompiling G:\Users\thomas\cpp\STLUsage\main.cpp
collect: relinking
collect2: '_ZNSt12_Vector_baseIiSaIiEEC1Ev' was assigned to 'obj\Debug\main.rpo', but was not defined during recompilation, or vice versa
obj\Debug\main.o: In function `vector':
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/include/c++/bits/stl_vector.h:208: undefined reference to `std::_Vector_base<int, std::allocator<int> >::_Vector_base()'
(...and so on...)
Я могу использовать шаблоны, которые я определил сам.
У меня есть этот двоичный файл MinGw из книги, и я следовал инструкциям в этой книге относительно настроек компилятора.В частности, ссылки на Boost libs взяты оттуда.
Это должно быть просто, я просто хочу использовать STL тривиально.
Редактировать Следуя совету, данному в ответе, я заменил двоичный файл наиспользоваться для компиляции с помощью g ++. exe в диалоговом окне «Настройки» -> «Компилятор и отладка -> исполняемые файлы инструментария», но я получаю те же сообщения об ошибках (при замене mingw32-g ++. exe на g ++. exe).1016 * Редактировать (еще раз) это должно быть проблемой с настройками Code :: Blocks, поскольку компиляция с использованием g ++ из командной строки работает просто отлично.