У меня есть библиотека зависимостей (libfcgi), которую я скомпилировал с помощью g++ (GCC v4.4 MinGW), используя следующие вызовы:
g++ -Iinclude -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++, так что я делаю неправильно?
Спасибо :)