C++ g++链接问题

C++ g++链接问题,c++,c,linker,g++,C++,C,Linker,G++,我有一个依赖性库libfcgi,我使用g++GCC v4.4 MinGW使用以下调用编译该库: g++-II包括-c-O2*.c ar rcs../libfcgi.a*.o 现在,我的主要项目是这样构建的: g++-idependances\libfcgi\include-ldpendances-O2-lfcgi*.cpp g++显然找到了libfcgi.a,但它未能链接到以下引用: “FCGI_printf” “FCGI_接受” 在libfcgi源代码中,这些函数定义如下: #ifdef __

我有一个依赖性库libfcgi,我使用g++GCC v4.4 MinGW使用以下调用编译该库:

g++-II包括-c-O2*.c ar rcs../libfcgi.a*.o

现在,我的主要项目是这样构建的:

g++-idependances\libfcgi\include-ldpendances-O2-lfcgi*.cpp

g++显然找到了libfcgi.a,但它未能链接到以下引用:

“FCGI_printf” “FCGI_接受”

在libfcgi源代码中,这些函数定义如下:

#ifdef __cplusplus
extern "C" {
#endif
//...
DLLAPI int FCGI_printf(const char *format, ...);  
DLLAPI int FCGI_Accept(void);
//...
#ifdef __cplusplus
}
#endif
其中DLLAPI什么都不是,因为它不是作为共享库编译的,而uu cplusplus是定义为g++

查看libfcgi.a,这些函数被导出为“_FCGI_Accept”和“_FCGI_printf”,因此前面有一个下划线。这似乎是阻碍g++找到它们的原因

我想用C++导出C++中的C函数就足够了,那么我做错了什么?< /P>
谢谢:

如果在.cpp源代码中有相同的extern C定义,那么我认为您的问题是-lfcgi应该在命令行中的*.cpp之后:

g++ -Idependancies\libfcgi\include -Ldependancies -O2 *.cpp -lfcgi

如果在.cpp源代码中有相同的extern C定义,那么我认为您的问题是-lfcgi应该在命令行中的*.cpp之后:

g++ -Idependancies\libfcgi\include -Ldependancies -O2 *.cpp -lfcgi

在主项目中,由于外部C,您告诉编译器链接C函数。因此,它需要未混合的符号名。因此,你应该用C编译器编译FCGI库,而不是C++编译器。p> 在主项目中,由于外部C,您告诉编译器链接C函数。因此,它需要未混合的符号名。因此,你应该用C编译器编译FCGI库,而不是C++编译器。p> 好的,我试着用gcc编译libfcgi,但问题仍然存在:好的,我试着用gcc编译libfcgi,但问题仍然存在:你真的认为在这种情况下参数顺序很重要吗?是的,它确实重要。库对象文件仅包含在前面的对象文件中,其中包含对符号的引用。哈!信不信由你,但和埃德加结合在一起。霍利斯的回答是,它确实有效!谢谢你真的认为在这种情况下,论点顺序很重要吗?是的,它很重要。库对象文件仅包含在前面的对象文件中,其中包含对符号的引用。哈!信不信由你,但和埃德加结合在一起。霍利斯的回答是,它确实有效!谢谢