Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Работа с динамическими библиотеками (С++)  (Прочитано 1026 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн aviacliff

  • Автор темы
  • Участник
  • *
  • Сообщений: 100
    • Просмотр профиля
В качестве примера  выбрал
http://www.firststeps.ru/linux/
шаг 8 Функции работы с динамическими библиотеками.

1) Создаем файл lib.c со следующим содержанием
 #include <stdio.h>
double power2(double x){
         return x*x;
   };

  double power3(double x){
         return x*x*x;
  };
 
  double power4(double x){
         return power2(x)*power2(x);
};

2) Создаем динамическую библиотеку libpowers.so
 cd ~/ci/ci2
 gcc -fPIC -c lib.c
gcc -shared lib.o -o libpowers.so

3) Создаем основную программу в файле main.c:
 #include <stdio.h>
 #include <dlfcn.h>

int main(int argc, char *argv[]){
void *ext_library;
double value=0;
double (*powerfunc)(double x);
ext_library=dlopen ("/home/v/ci/ci2/libpowers.so", RTLD_LAZY);

if(!ext_library){
fprintf(stderr,"dlopen() error: %s\n", dlerror());
return 1;
};

powerfunc=dlsym(ext_library, argv[1]);
value=3.0;

print("%s(%f) = %f\n",argv[1],value,(*powerfunc)(value));
dlclose(ext_library);
};

4) После команды
gcc main.c -o main -ldl
получаю:
/tmp/ccRITBb9.o: In function `main':
main.c:(.text+0xa8): undefined reference to `print'
collect2: ld returned 1 exit status

Закончилось терпение и нехватает опыта.
Подскажите, пожалуйста, что здесь не так.
Спасибо.
ps Система ОС Ubuntu 11.10 32-bit
Напоминаю, "UBUNTU" переводится как "ЧЕЛОВЕЧНОСТЬ"

Оффлайн Кровавый

  • Старожил
  • *
  • Сообщений: 1626
  • Логика творит чудеса!
    • Просмотр профиля
Re: Работа с динамическими библиотеками (С++)
« Ответ #1 : 16 Сентября 2012, 22:31:49 »
printf(); ?
Железо: AMD FX8350 4.2Ghz + 2x4Gb Kingston HeyperX + Asus M5A97 R2.0 + HDD WD WZ10EZEX 1TB 7200 rpm + SSD 128 GB + Win 10 x64.

Оффлайн aviacliff

  • Автор темы
  • Участник
  • *
  • Сообщений: 100
    • Просмотр профиля
Re: Работа с динамическими библиотеками (С++)
« Ответ #2 : 16 Сентября 2012, 22:44:57 »
Попробую сейчас!

Пользователь решил продолжить мысль 16 Сентября 2012, 22:53:33:
Кровавый, большое спасибо!
Все зашелестело.
Какой раз убеждаюсь, не допускай мелких ошибок.
Еще раз спасибо!!!
« Последнее редактирование: 16 Сентября 2012, 22:53:33 от aviacliff »
Напоминаю, "UBUNTU" переводится как "ЧЕЛОВЕЧНОСТЬ"

 

Страница сгенерирована за 0.028 секунд. Запросов: 25.