Objective c 无法链接Obj-C项目中的静态C库(Xcode 4.6.3)
我正在尝试使用libftp构建一个基本的FTP客户端。我已将其编译并归档为Objective c 无法链接Obj-C项目中的静态C库(Xcode 4.6.3),objective-c,xcode,linker,static-libraries,Objective C,Xcode,Linker,Static Libraries,我正在尝试使用libftp构建一个基本的FTP客户端。我已将其编译并归档为libftp.a,并将其放置在/usr/local/lib中。我在/usr/local/include/ftp中放置的所有必要标题 在构建设置下,我将“标题搜索路径”设置为/usr/local/include,并将“库搜索路径”设置为/usr/local/lib。对于“其他链接器标志”,我添加了-lftp 这里是我C++类的外壳: 连接器.h: #include <stdlib.h> #include <
libftp.a
,并将其放置在/usr/local/lib
中。我在/usr/local/include/ftp
中放置的所有必要标题
在构建设置下,我将“标题搜索路径”设置为/usr/local/include
,并将“库搜索路径”设置为/usr/local/lib
。对于“其他链接器标志”,我添加了-lftp
这里是我C++类的外壳:
连接器.h:#include <stdlib.h>
#include <ftp/ftp.h>
#include <stdio.h>
class Connector{
private:
FtpConnection *connection;
public:
Connector();
~Connector();
bool connect(const char *hostname, const char *port);
};
#include "Connector.h"
Connector::Connector(){
}
Connector::~Connector(){
}
bool Connector::connect(const char *hostname, const char *port){
ftpGetAddresses(hostname, port);
printf("Connected!\n");
return true;
}
编译时,我得到的错误是:
架构x86_64的未定义符号:“ftpgetAddresss(char
常量*,字符常量*)”,引用自:
连接器::连接器中的connect(char const*,char const*)。未找到体系结构x86\u 64的ld:symbol命令:错误:连接器
命令失败,退出代码为1(使用-v查看调用)
可能值得注意的是,这是Cocoa项目的一部分,因此,连接器
类包含在我的AppDelegate
中,这当然是一个Obj-C类。我所有的Obj-C源文件都有.mm
扩展名
我确信lib处于正常工作状态,因为我在命令行上用
gcc编译程序没有问题-lftp
。这只是Xcode的一个问题。好吧,看来我是通过自己的问题来解决的。当我输入问题的最后一部分时,我意识到这个问题是在C++源文件中连接C库。code>gcc可以在命令行上编译,但是g++
给了我与Xcode相同的错误。后来我在谷歌上搜索了一下,很好地解决了我的问题。基本上,如果你希望C库与C++兼容,你需要添加< /P>
#ifdef __cplusplus
extern "C" {
#endif
在库头文件的顶部,添加
#ifdef __cplusplus
}
#endif
在文件的底部。我将把这个问题留在这里,希望它能在将来帮助其他人