Saya memiliki perpustakaan ketergantungan (libfcgi) yang saya kompilasi dengan g++ (GCC v4.4 MinGW) menggunakan panggilan berikut:
g++ -Iinclude -c -O2 *.c
ar rcs ../libfcgi.a *.o
Sekarang, proyek utama saya dibuat seperti ini:
g++ -Idependancies\libfcgi\include -Ldependancies -O2 -lfcgi *.cpp
g++ rupanya menemukan libfcgi.a, namun gagal menautkan ke referensi berikut:
'FCGI_printf'
'FCGI_Terima'
Di sumber libfcgi, fungsi-fungsi ini didefinisikan sebagai berikut:
#ifdef __cplusplus
extern "C" {
#endif
//...
DLLAPI int FCGI_printf(const char *format, ...);
DLLAPI int FCGI_Accept(void);
//...
#ifdef __cplusplus
}
#endif
di mana DLLAPI bukan apa-apa (karena tidak dikompilasi sebagai perpustakaan bersama) dan __cplusplus didefinisikan (g++).
Melihat libfcgi.a, fungsi-fungsi tersebut diekspor sebagai '_FCGI_Accept' dan '_FCGI_printf', jadi dengan garis bawah di depannya. Hal itulah yang tampaknya menghalangi g++ untuk menemukannya.
Saya pikir menggunakan ekspor "C" sudah cukup untuk menautkan ke fungsi C di C++, jadi apa yang saya lakukan salah?
Terima kasih :)