The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Трабл (линковщик не находит функцию new)"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Трабл (линковщик не находит функцию new)" 
Сообщение от Gerald emailИскать по авторуВ закладки(ok) on 09-Мрт-05, 20:41  (MSK)
При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может не подключил какую то библиотеку?
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Трабл (линковщик не находит функцию new)" 
Сообщение от Arifolth emailИскать по авторуВ закладки(ok) on 10-Мрт-05, 10:02  (MSK)
>При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот
>линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может
>не подключил какую то библиотеку?

попробуй
#include <new>

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Трабл (линковщик не находит функцию new)" 
Сообщение от Arifolth emailИскать по авторуВ закладки(ok) on 10-Мрт-05, 14:06  (MSK)
>>При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот
>>линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может
>>не подключил какую то библиотеку?
>
>попробуй
>#include <new>

эээ
и ещё
а компилятор какой?
плюсовый?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Трабл (линковщик не находит функцию new)" 
Сообщение от Gerald emailИскать по авторуВ закладки(??) on 10-Мрт-05, 17:10  (MSK)
компилятор gcc


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Трабл (линковщик не находит функцию new)" 
Сообщение от Xenu emailИскать по авторуВ закладки on 11-Мрт-05, 00:54  (MSK)
>При разработке проги использую функцию new. Компилятор ошибок не выдает, но вот
>линковщик ее не видит, выдает ошибки. Подскажите в чем трабл, может
>не подключил какую то библиотеку?

ты бы, мил человек, показал бы, что ли кусочек кода на который ругается и  сообщение об ошибке, а то время доступа к волшебному кристаллу ограничено и не всегда возможно рассмотреть, что же ты имеешь ввиду когда задаешь вопрос.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Трабл (линковщик не находит функцию new)" 
Сообщение от Gerald emailИскать по авторуВ закладки(??) on 12-Мрт-05, 12:03  (MSK)
Уважаемые коллеги... По Вашей просьбе предлагаю Вам "ругательный" кусок кода. Возникла интересная ситуация (для меня, конечно)... При использовании 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] Ошибка

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Трабл (линковщик не находит функцию new)" 
Сообщение от gyn61 Искать по авторуВ закладки(ok) on 12-Мрт-05, 12:31  (MSK)
Попробуйте
extern "C" {
#include <libipq.h>
}
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Трабл (линковщик не находит функцию new)" 
Сообщение от Xenu emailИскать по авторуВ закладки on 13-Мрт-05, 21:31  (MSK)
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.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Трабл (линковщик не находит функцию new)" 
Сообщение от Gerald emailИскать по авторуВ закладки(??) on 14-Мрт-05, 19:56  (MSK)
Уважаемый Xenu!!! Огромное спасибо за подсказку, какую библиотеку подключать (я к этому времени уже начал догадываться в чем дело)...
Я решил этот вопрос следующим образом. Взял исходник библиотеки libipq (там один файл libipq.c) изменил его название на libipq.cрр (тем самым компилирую в с++ формате) откомпилил вместе с проектом. Все прошло замечательно.... За помощь еще раз всем спасибо...


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Трабл (линковщик не находит функцию new)" 
Сообщение от Xenu emailИскать по авторуВ закладки on 15-Мрт-05, 03:12  (MSK)
>Уважаемый Xenu!!! Огромное спасибо за подсказку, какую библиотеку подключать (я к этому
>времени уже начал догадываться в чем дело)...
Пожалуйста. Всегда приятно ответить на правильно заданый вопрос. :-)
https://www.opennet.ru/opennews/art.shtml?num=1692


>Я решил этот вопрос следующим образом. Взял исходник библиотеки libipq (там один
>файл libipq.c) изменил его название на libipq.cрр (тем самым компилирую в
>с++ формате) откомпилил вместе с проектом. Все прошло замечательно.... За помощь
>еще раз всем спасибо...
Тут мы видим мощь невообразимую и гибкость необычайную открытых исходников в действии.
Взял, подправил под свои нужды и все работает.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру