Подтвердить что ты не робот

Как использовать функцию из статической библиотеки, если у меня нет файла заголовка

Можно ли использовать функцию из static lib, если у меня нет файла заголовка, только файл *.a, но я знаю подпись функции?

4b9b3361

Ответ 1

Да, если вы знаете подпись функции

Просто напишите подпись функции перед ее вызовом, как:

void f(int); //it is as if you've included a header file

//then call it
f(100);

Все, что вам нужно сделать, это: связать slib.a с программой.

Кроме того, помните, что если статическая библиотека написана на C и была скомпилирована с компилятором C, тогда вы должны использовать extern "C" при написании сигнатуры функции (если вы программируете на С++), как:

extern "C" void f(int); //it is as if you've included a header file

//then call it
f(100);

В качестве альтернативы, если у вас много функций, вы можете сгруппировать их как:

extern "C" 
{
   void f(int); 
   void g(int, int); 
   void h(int, const char*);
} 

Вы можете предпочесть записывать все сигнатуры функций в пространстве имен, чтобы избежать возможных столкновений имен:

namespace capi
{
  extern "C" 
  {
    void f(int); 
    void g(int, int); 
    void h(int, const char*);
  } 
}

//use them as:

capi::f(100); 
capi::g(100,200); 
capi::h(100,200, "string"); 

Теперь вы можете записать все это в файл заголовка, чтобы вы могли включить заголовочный файл в ваши файлы .cpp (как обычно) и вызвать функцию (как обычно).

Надеюсь, что это поможет.

Ответ 2

Самый простой способ: записать подпись в файл заголовка, включить его и связать с библиотекой.