stlport
От: just_ice Россия  
Дата: 22.12.08 09:27
Оценка:
Помогите новичку.

Установил mingw, wxwidgets, codeblocks, msys. Всё работает прекрасно, НО в mingw нет wstring, wcout...
Решил использовать stlport. Уже две недели пытаюсь собрать с ним простейшую програмку.

Собираю stlport:

U:\cpp\stlport\build\lib>make -f gcc.mak


Получаю libstlport.5.2.dll в U:\cpp\stlport\build\lib\obj\gcc\so.

Далее, пытаюсь собрать простую програмку.

build.bat:

@echo on

set PATH=u:\cpp\mingw\bin;%PATH%
set PATH=u:\cpp\msys\bin;%PATH%

g++ -c -I u:\cpp\stlport\stlport main.cpp -o main.o
g++ -o main.exe main.o -L u:\cpp\stlport\build\lib\obj\gcc\so -l libstlport.5.2

pause



Код main.cpp:

#include <cstring>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    wstring x = L"wide string";
    wcout<<x.c_str()<<endl;
}


Компилируется нормально, но при сборке вылазит всяка бяка:

U:\cpp\pro\stl_port_test>set PATH=u:\cpp\mingw\bin;d:\profile\short-links;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\TortoiseSVN\bin

U:\cpp\pro\stl_port_test>set PATH=u:\cpp\msys\bin;u:\cpp\mingw\bin;d:\profile\short-links;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\TortoiseSVN\bin

U:\cpp\pro\stl_port_test>g++ -c -I u:\cpp\stlport\stlport main.cpp -o main.o

U:\cpp\pro\stl_port_test>g++ -o main.exe main.o -L u:\cpp\stlport\build\lib\obj\gcc\so -l libstlport.5.2
main.o:main.cpp:(.text+0xf6): undefined reference to `_imp___ZN11stlpmtx_std5wcoutE'
main.o:main.cpp:(.text$_ZN11stlpmtx_std12__node_alloc10deallocateEPvj[stlpmtx_std::__node_alloc::deallocate(void*, unsigned int)]+0x2a): undefined reference to `_imp___ZN11stlpmtx_std12__node_alloc13_M_deallocateEPvj'
main.o:main.cpp:(.text$_ZNK11stlpmtx_std4priv12_String_baseIwNS_9allocatorIwEEE21_M_throw_length_errorEv[stlpmtx_std::priv::_String_base<wchar_t, stlpmtx_std::allocator<wchar_t> >::_M_throw_length_error() const]+0xe): undefined reference to `_imp___ZN11stlpmtx_std24__stl_throw_length_errorEPKc'
main.o:main.cpp:(.text$_ZN11stlpmtx_std8ios_base23_M_check_exception_maskEv[stlpmtx_std::ios_base::_M_check_exception_mask()]+0x1d): undefined reference to `_imp___ZN11stlpmtx_std8ios_base16_M_throw_failureEv'
main.o:main.cpp:(.text$_ZN11stlpmtx_std12__node_alloc8allocateERj[stlpmtx_std::__node_alloc::allocate(unsigned int&)]+0x2a): undefined reference to `_imp___ZN11stlpmtx_std12__node_alloc11_M_allocateERj'
collect2: ld returned 1 exit status

U:\cpp\pro\stl_port_test>pause
Для продолжения нажмите любую клавишу . . .


Подскажите, пожалуйста, в чём проблема, куда копать...
Re: stlport
От: Аноним  
Дата: 22.12.08 17:28
Оценка:
Друзья, неужели никто не использовал stlport?
Киньтесь хоть ссылочкой, что курить...
Re[2]: stlport
От: unix_hater  
Дата: 22.12.08 17:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Друзья, неужели никто не использовал stlport?

А>Киньтесь хоть ссылочкой, что курить...

http://www.nabble.com/Building-STLport-on-MinGW-td13433840.html

попробуй почитать — обсуждается как раз связка StlPort, mingw, wxWidgets. Возможно поможет пересборка StlPort с ключами, указанными в этом треде
Re[3]: stlport
От: just_ice Россия  
Дата: 23.12.08 15:38
Оценка:
Здравствуйте, unix_hater, Вы писали:
> http://www.nabble.com/Building-STLport-on-MinGW-td13433840.html
> попробуй почитать — обсуждается как раз связка StlPort, mingw, wxWidgets. Возможно поможет пересборка StlPort с ключами, указанными в этом треде

Там написано:
> cd c:/STLport/build/lib
> make -f gcc.mak depend
> make -f gcc.mak install

this is the good one


У меня последняя команда не выполняется:
F:\stlport\build\lib>make -f gcc.mak install
make: Nothing to be done for `install'.
Re: stlport
От: just_ice Россия  
Дата: 24.12.08 14:50
Оценка:
Здравствуйте, just_ice, Вы писали:

_>Компилируется нормально, но при сборке вылазит всяка бяка:


_>main.o:main.cpp.text+0xf6): undefined reference to `_imp___ZN11stlpmtx_std5wcoutE'

_>main.o:main.cpp.text$_ZN11stlpmtx_std12__node_alloc10deallocateEPvj[stlpmtx_std::__node_alloc::deallocate(void*, unsigned int)]+0x2a): undefined reference to `_imp___ZN11stlpmtx_std12__node_alloc13_M_deallocateEPvj'
_>main.o:main.cpp.text$_ZNK11stlpmtx_std4priv12_String_baseIwNS_9allocatorIwEEE21_M_throw_length_errorEv[stlpmtx_std::priv::_String_base<wchar_t, stlpmtx_std::allocator<wchar_t> >::_M_throw_length_error() const]+0xe): undefined reference to `_imp___ZN11stlpmtx_std24__stl_throw_length_errorEPKc'
_>main.o:main.cpp.text$_ZN11stlpmtx_std8ios_base23_M_check_exception_maskEv[stlpmtx_std::ios_base::_M_check_exception_mask()]+0x1d): undefined reference to `_imp___ZN11stlpmtx_std8ios_base16_M_throw_failureEv'
_>main.o:main.cpp.text$_ZN11stlpmtx_std12__node_alloc8allocateERj[stlpmtx_std::__node_alloc::allocate(unsigned int&)]+0x2a): undefined reference to `_imp___ZN11stlpmtx_std12__node_alloc11_M_allocateERj'
_>collect2: ld returned 1 exit status

При компиляции нужно было указать параметр -mthreads
Re[4]: stlport
От: Аноним  
Дата: 27.12.08 17:30
Оценка:
Здравствуйте, just_ice, Вы писали:

_>У меня последняя команда не выполняется:

_>
_>F:\stlport\build\lib>make -f gcc.mak install
_>make: Nothing to be done for `install'.
_>

Это make тебе сказал, что всё уже собрано
Для начала нужно удалить прежде собранные бинарники
Как-то так, например:
F:\stlport\build\lib>make -f gcc.mak clean
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.