【发布时间】:2010-02-27 11:51:11
【问题描述】:
我有一个使用 g++ (GCC v4.4 MinGW) 编译的依赖库 (libfcgi),使用以下调用:
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++ 找到它们的原因。
我认为使用 export "C" 就足以链接到 C++ 中的 C 函数,那么我做错了什么?
谢谢:)
【问题讨论】: