Можно ли использовать функцию из static lib, если у меня нет файла заголовка, только файл *.a, но я знаю подпись функции?
Как использовать функцию из статической библиотеки, если у меня нет файла заголовка
Ответ 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
Самый простой способ: записать подпись в файл заголовка, включить его и связать с библиотекой.