- Трабл (линковщик не находит функцию new), Arifolth, 10:02 , 10-Мрт-05 (1)
>При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот >линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может >не подключил какую то библиотеку? попробуй #include <new>
- Трабл (линковщик не находит функцию new), Arifolth, 14:06 , 10-Мрт-05 (2)
>>При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот >>линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может >>не подключил какую то библиотеку? > >попробуй >#include <new>эээ и ещё а компилятор какой? плюсовый?
- Трабл (линковщик не находит функцию new), Xenu, 00:54 , 11-Мрт-05 (4)
>При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот >линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может >не подключил какую то библиотеку? ты бы, мил человек, показал бы, что ли кусочек кода на который ругается и сообщение об ошибке, а то время доступа к волшебному кристаллу ограничено и не всегда возможно рассмотреть, что же ты имеешь ввиду когда задаешь вопрос.
- Трабл (линковщик не находит функцию new), Gerald, 12:03 , 12-Мрт-05 (5)
Уважаемые коллеги... По Вашей просьбе предлагаю Вам "ругательный" кусок кода. Возникла интересная ситуация (для меня, конечно)... При использовании gcc линковщик не находит функцию new, но "видит" функции ipq, а при использовании g++ "ругается" на то, что не находит функции ipq, но НЕ "ругается" на функцию new (см. результат выполнения ниже).#make g++ -I/usr/local/include -L/usr/local/lib testipq.o ipn.o -o tf -lipq testipq.o: In function `die(ipq_handle*)': testipq.o(.text+0xf): undefined reference to `ipq_perror(char const*)' testipq.o(.text+0x1d): undefined reference to `ipq_destroy_handle(ipq_handle*)' testipq.o: In function `main': testipq.o(.text+0x9f): undefined reference to `ipq_create_handle(unsigned)' testipq.o(.text+0xd7): undefined reference to `ipq_set_mode(ipq_handle const*, unsigned char, unsigned)' testipq.o(.text+0x10e): undefined reference to `ipq_read(ipq_handle const*, unsigned char*, unsigned, int)' testipq.o(.text+0x13a): undefined reference to `ipq_message_type(unsigned char const*)' testipq.o(.text+0x16c): undefined reference to `ipq_get_msgerr(unsigned char const*)' testipq.o(.text+0x191): undefined reference to `ipq_get_packet(unsigned char const*)' testipq.o(.text+0x1cf): undefined reference to `ipq_set_verdict(ipq_handle const*, unsigned, unsigned, unsigned, unsigned char*)' collect2: ld returned 1 exit status make: *** [res] Ошибка
- Трабл (линковщик не находит функцию new), gyn61, 12:31 , 12-Мрт-05 (6)
Попробуйте extern "C" { #include <libipq.h> }
- Трабл (линковщик не находит функцию new), Xenu, 21:31 , 13-Мрт-05 (7)
gcc это не просто компилятор, это GNU Compiler Collection и его задача состоит в том, что бы определить тип файла, который был подан на обработку и вызвать соответствующий компилятор. Это может быть C, C++, Fortran и так далее, подробности на http://gcc.gnu.org/подробности как gcc определяет тип файла мне не известны, знаю, что один из критериев, расширение в имени файла (c, cpp, cc, C, cxx) gcc вызывает с-компилятор если имя файла оканчивается на .c, а тот не знает про new потому, что new это оператор языка С++. g++ вызывает с++ компилятор безусловно и тот находит new, но формирует c++ имена для всех функций, которые линковщик не может найти в libipq так как та собрана как c-библиотека. поэтому используйте extern "C", как уже было рекомендовано, если компилируете С++ и С вместе и вызываете g++ и добавьте -lstdc++ если вызываете gcc.
- Трабл (линковщик не находит функцию new), Gerald, 19:56 , 14-Мрт-05 (8)
Уважаемый Xenu!!! Огромное спасибо за подсказку, какую библиотеку подключать (я к этому времени уже начал догадываться в чем дело)... Я решил этот вопрос следующим образом. Взял исходник библиотеки libipq (там один файл libipq.c) изменил его название на libipq.cрр (тем самым компилирую в с++ формате) откомпилил вместе с проектом. Все прошло замечательно.... За помощь еще раз всем спасибо...
- Трабл (линковщик не находит функцию new), Xenu, 03:12 , 15-Мрт-05 (9)
>Уважаемый Xenu!!! Огромное спасибо за подсказку, какую библиотеку подключать (я к этому >времени уже начал догадываться в чем дело)... Пожалуйста. Всегда приятно ответить на правильно заданый вопрос. :-) https://www.opennet.ru/opennews/art.shtml?num=1692 >Я решил этот вопрос следующим образом. Взял исходник библиотеки libipq (там один >файл libipq.c) изменил его название на libipq.cрр (тем самым компилирую в >с++ формате) откомпилил вместе с проектом. Все прошло замечательно.... За помощь >еще раз всем спасибо... Тут мы видим мощь невообразимую и гибкость необычайную открытых исходников в действии. Взял, подправил под свои нужды и все работает.
|