как работать с .so файлом без запуска в командной строке g ++ - PullRequest
1 голос
/ 05 сентября 2011

Я создал .so файл с именем car.so. Я хотел бы протестировать и работать с этой библиотекой в ​​коде test.cc. В командной строке я хотел бы скомпилировать: g ++ test.cc -o test. Я не хочу также связывать (включать) библиотеку car.so.

Как это сделать?

Мой код test.cc выглядит так:

void* handle = dlopen("/home/v3/car.so", RTLD_LAZY);

  Car* (*create)();
  void (*destroy)(Car*);

  create = (Car* (*)())dlsym(handle, "create_object");
  destroy = (void (*)(Car*))dlsym(handle, "destroy_object");

  Car* carr = (Car*)create();
  carr->brake();
  destroy( carr );

Я также хотел бы спросить, возможно ли включить файл 3 .so в один файл .so.

редактирование:

Я работаю в Ubuntu / Linux

1 Ответ

2 голосов
/ 05 сентября 2011

В общем, вы должны включить .h файл вашей библиотеки .so в ваш (application) / test.cc, а затем скомпилировать этот файл test.cc, связав этот файл .so и использовать сгенерированный binaray.

Я думаю, что эта ссылка действительно поможет вам .. http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

...