* [Comm] Компоновка с STL в gcc3 @ 2003-04-14 10:41 Прокопьев Евгений 2003-04-14 12:12 ` [Comm] " Sergey Vlasov 0 siblings, 1 reply; 6+ messages in thread From: Прокопьев Евгений @ 2003-04-14 10:41 UTC (permalink / raw) To: community Здравствуйте! Был проект, компилировавшийся без проблем в gcc2 от ALM 2.0. Теперь компиляция тоже проходит без проблем, а при компоновке я получаю следующее: $ make g++ -c -o requester.o requester.cpp g++ -c -o serial.o serial.cpp g++ -c -o sulim.o sulim.cpp gcc -o requester requester.o serial.o sulim.o xmlconfig/XMLConfig.o -lstdc++ -lexpat sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::find(unsigned char const*, unsigned) const': sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd): undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::find(unsigned char const*, unsigned, unsigned) const': sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhjj+0x4c): undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' ... collect2: ld returned 1 exit status make: *** [requester] Ошибка 1 Куда копать? -- С уважением, Прокопьев Евгений ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Компоновка с STL в gcc3 2003-04-14 10:41 [Comm] Компоновка с STL в gcc3 Прокопьев Евгений @ 2003-04-14 12:12 ` Sergey Vlasov 2003-04-14 12:52 ` Прокопьев Евгений 0 siblings, 1 reply; 6+ messages in thread From: Sergey Vlasov @ 2003-04-14 12:12 UTC (permalink / raw) To: community On Mon, 14 Apr 2003 14:41:16 +0400 Прокопьев Евгений <john@rmts.donpac.ru> wrote: > Был проект, компилировавшийся без проблем в gcc2 от ALM 2.0. Теперь > компиляция тоже проходит без проблем, а при компоновке я получаю следующее: > > $ make > g++ -c -o requester.o requester.cpp > g++ -c -o serial.o serial.cpp > g++ -c -o sulim.o sulim.cpp > gcc -o requester requester.o serial.o sulim.o xmlconfig/XMLConfig.o > -lstdc++ -lexpat > sulim.o: In function `std::basic_string<unsigned char, > std::char_traits<unsigned char>, std::allocator<unsigned char> > >::find(unsigned char const*, unsigned) const': > sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd): > undefined reference to `std::char_traits<unsigned char>::length(unsigned > char const*)' > sulim.o: In function `std::basic_string<unsigned char, > std::char_traits<unsigned char>, std::allocator<unsigned char> > >::find(unsigned char const*, unsigned, unsigned) const': > sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhjj+0x4c): > undefined reference to `std::char_traits<unsigned > char>::compare(unsigned char const*, unsigned char const*, unsigned)' > ... > collect2: ld returned 1 exit status > make: *** [requester] Ошибка 1 А если при сборке вызывать тоже g++, а не gcc? ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: Компоновка с STL в gcc3 2003-04-14 12:12 ` [Comm] " Sergey Vlasov @ 2003-04-14 12:52 ` Прокопьев Евгений 2003-04-14 13:25 ` Sergey Vlasov 0 siblings, 1 reply; 6+ messages in thread From: Прокопьев Евгений @ 2003-04-14 12:52 UTC (permalink / raw) To: community > А если при сборке вызывать тоже g++, а не gcc? $ make clean rm -f *.o requester $ make g++ -c -o requester.o requester.cpp g++ -c -o serial.o serial.cpp g++ -c -o sulim.o sulim.cpp g++ -o requester requester.o serial.o sulim.o xmlconfig/XMLConfig.o -lstdc++ -lexpat sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::find(unsigned char const*, unsigned) const': sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd): undefined reference to `std::char_traits<unsigned char>::length(unsigned char const*)' sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::find(unsigned char const*, unsigned, unsigned) const': sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhjj+0x4c): undefined reference to `std::char_traits<unsigned char>::compare(unsigned char const*, unsigned char const*, unsigned)' sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_Rep::_M_clone(std::allocator<unsigned char> const&, unsigned)': sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE4_Rep8_M_cloneERKS1_j+0xaa): undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)' sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_M_mutate(unsigned, unsigned, unsigned)': sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE9_M_mutateEjjj+0x143): undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)' sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE9_M_mutateEjjj+0x170): undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)' sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE9_M_mutateEjjj+0x283): undefined reference to `std::char_traits<unsigned char>::move(unsigned char*, unsigned char const*, unsigned)' sulim.o: In function `std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >::_S_copy_chars(unsigned char*, unsigned char const*, unsigned char const*)': sulim.o(.gnu.linkonce.t._ZNSbIhSt11char_traitsIhESaIhEE13_S_copy_charsEPhPKhS5_+0x1b): undefined reference to `std::char_traits<unsigned char>::copy(unsigned char*, unsigned char const*, unsigned)' collect2: ld returned 1 exit status make: *** [requester] Ошибка 1 -- С уважением, Прокопьев Евгений ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Компоновка с STL в gcc3 2003-04-14 12:52 ` Прокопьев Евгений @ 2003-04-14 13:25 ` Sergey Vlasov 2003-04-15 4:13 ` Прокопьев Евгений 0 siblings, 1 reply; 6+ messages in thread From: Sergey Vlasov @ 2003-04-14 13:25 UTC (permalink / raw) To: community On Mon, 14 Apr 2003 16:52:46 +0400 Прокопьев Евгений <john@rmts.donpac.ru> wrote: > sulim.o: In function `std::basic_string<unsigned char, > std::char_traits<unsigned char>, std::allocator<unsigned char> > >::find(unsigned char const*, unsigned) const': > sulim.o(.gnu.linkonce.t._ZNKSbIhSt11char_traitsIhESaIhEE4findEPKhj+0xd): > undefined reference to `std::char_traits<unsigned char>::length(unsigned > char const*)' [skip] А, так вы пытаетесь работать с std::basic_string<unsigned char>. Надо делать специализацию std::char_traits<unsigned char>. В стандартном C++ <string> должен определять специализации только для char и wchar_t - что он и делает в gcc3. Для общего случая определяется только пустышка без реализации. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Comm] Re: Компоновка с STL в gcc3 2003-04-14 13:25 ` Sergey Vlasov @ 2003-04-15 4:13 ` Прокопьев Евгений 2003-04-15 11:42 ` Sergey Vlasov 0 siblings, 1 reply; 6+ messages in thread From: Прокопьев Евгений @ 2003-04-15 4:13 UTC (permalink / raw) To: community > А, так вы пытаетесь работать с std::basic_string<unsigned char>. > > Надо делать специализацию std::char_traits<unsigned char>. В > стандартном C++ <string> должен определять специализации только для > char и wchar_t - что он и делает в gcc3. Для общего случая > определяется только пустышка без реализации. $ make clean rm -f *.o requester $ make g++ -c -o requester.o requester.cpp g++ -c -o serial.o serial.cpp g++ -c -o sulim.o sulim.cpp sulim.cpp: In member function `void sulim_device::check(byte*, byte*, byte*)': sulim.cpp:70: no matching function for call to `std::char_traits<byte>::append(byte*, int)' sulim.cpp:72: no matching function for call to `std::char_traits<byte>::find(byte*&)' /usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned int, const _CharT&) [with _CharT = byte] sulim.cpp:72: `struct std::char_traits<byte>' has no member named `npos' sulim.cpp:73: no matching function for call to `std::char_traits<byte>::find(byte*&)' /usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned int, const _CharT&) [with _CharT = byte] sulim.cpp:73: `struct std::char_traits<byte>' has no member named `npos' sulim.cpp:78: no matching function for call to `std::char_traits<byte>::length()' /usr/include/c++/3.2.1/bits/char_traits.h:76: candidates are: static size_t std::char_traits<_CharT>::length(const _CharT*) [with _CharT = byte] sulim.cpp:79: no match for `byte_queue& [unsigned int&]' operator sulim.cpp:84: no matching function for call to `std::char_traits<byte>::find(byte*&)' /usr/include/c++/3.2.1/bits/char_traits.h:79: candidates are: static const _CharT* std::char_traits<_CharT>::find(const _CharT*, unsigned int, const _CharT&) [with _CharT = byte] sulim.cpp:84: `struct std::char_traits<byte>' has no member named `npos' make: *** [sulim.o] Ошибка 1 Это случилось после того, как basic_string<unsigned char> я заменил на char_traits<unsigned char>. Собственно вопрос: где искать реализацию для char, чтобы методом копировать/вставить/заменить сделать аналог (как-то все это не по-человечьи), и где читать: a) про реализацию стандарта C++ в gcc3 б) про саму стандартную библиотеку C++ (по C маны есть, а тут не предусмотрели :( ) -- С уважением, Прокопьев Евгений ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Comm] Re: Компоновка с STL в gcc3 2003-04-15 4:13 ` Прокопьев Евгений @ 2003-04-15 11:42 ` Sergey Vlasov 0 siblings, 0 replies; 6+ messages in thread From: Sergey Vlasov @ 2003-04-15 11:42 UTC (permalink / raw) To: community On Tue, 15 Apr 2003 08:13:01 +0400 Прокопьев Евгений <john@rmts.donpac.ru> wrote: > > А, так вы пытаетесь работать с std::basic_string<unsigned char>. > > > > Надо делать специализацию std::char_traits<unsigned char>. В > > стандартном C++ <string> должен определять специализации только для > > char и wchar_t - что он и делает в gcc3. Для общего случая > > определяется только пустышка без реализации. [куча ошибок поскипана] > Это случилось после того, как basic_string<unsigned char> я заменил на > char_traits<unsigned char>. Так менять нельзя. Нужно написать где-то в своём .h специализацию std::char_traits<unsigned char>; лучше там же определить и typedef на std::basic_string<unsigned char>, чтобы нельзя было им пользоваться, не объявив эту специализацию. Т.е. #include <string> template <> struct std::char_traits<unsigned char> { ... }; typedef std::basic_string<unsigned char> my_super_cool_string; Можно явно указывать свой класс traits вторым параметром шаблона std::basic_string. > Собственно вопрос: где искать реализацию для char, чтобы методом > копировать/вставить/заменить сделать аналог (как-то все это не > по-человечьи), /usr/include/c++/3.2.1/bits/char_traits.h > и где читать: > > a) про реализацию стандарта C++ в gcc3 > б) про саму стандартную библиотеку C++ (по C маны есть, а тут не > предусмотрели :( ) /usr/share/doc/gcc-3.2/libstdc++ ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2003-04-15 11:42 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-04-14 10:41 [Comm] Компоновка с STL в gcc3 Прокопьев Евгений 2003-04-14 12:12 ` [Comm] " Sergey Vlasov 2003-04-14 12:52 ` Прокопьев Евгений 2003-04-14 13:25 ` Sergey Vlasov 2003-04-15 4:13 ` Прокопьев Евгений 2003-04-15 11:42 ` Sergey Vlasov
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git