У меня есть библиотека зависимостей (libfcgi), которую я скомпилировал с помощью g ++ (GCC v4.4 MinGW), используя следующие вызовы:
g ++ -Включить -c -O2 * .c
ar rcs ../libfcgi.a * .o
Теперь мой основной проект построен так:
g ++ -Idependancies \ libfcgi \ include -Ldependancies -O2 -lfcgi * .cpp
g ++, по-видимому, находит libfcgi.a, но все же не может ссылаться на следующие ссылки:
FCGI_printf '
'FCGI_Accept'
В источниках libfcgi эти функции определены следующим образом:
#ifdef __cplusplus
extern "C" {
#endif
//...
DLLAPI int FCGI_printf(const char *format, ...);
DLLAPI int FCGI_Accept(void);
//...
#ifdef __cplusplus
}
#endif
где DLLAPI - это ничто (поскольку оно не скомпилировано как разделяемая библиотека) и определен __cplusplus (g ++).
Глядя на libfcgi.a, эти функции экспортируются как '_FCGI_Accept' и '_FCGI_printf', поэтому с подчеркиванием впереди. Вот что, кажется, мешает g ++ найти их.
Я думал, что использования экспорта "C" будет достаточно для ссылки на функцию C в C ++, так что я делаю неправильно?
Спасибо:)