我有一个依赖库(libfcgi),我使用以下调用用g++(GCC v4.4 MinGW)进行了编译:
现在,我的主要项目是这样构建的:
g++显然找到了libfcgi.a,但是它无法链接到以下引用:
在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函数,那么我在做什么错呢?
谢谢 :)
最佳答案
如果您在.cpp源代码中具有相同的外部“C”定义,那么我认为您的问题是-lfcgi应该在命令行中跟随* .cpp:
g++ -Idependancies\libfcgi\include -Ldependancies -O2 *.cpp -lfcgi