【发布时间】:2013-08-19 21:20:11
【问题描述】:
我正在尝试使用 libftp 构建一个基本的 FTP 客户端。我已将其编译并存档为libftp.a,并将其放在/usr/local/lib 中。我在/usr/local/include/ftp 中放置了所有必要的标头。
在构建设置下,我已将“标题搜索路径”设置为 /usr/local/include,并将“库搜索路径”设置为 /usr/local/lib。对于“其他链接器标志”,我添加了-lftp。
这是我的 C++ 类的外壳:
Connector.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);
};
Connector.cc:
#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 的未定义符号:“ftpGetAddresses(char const*, char const*)",引用自: Connector.o ld 中的 Connector::connect(char const*, char const*):未找到架构 x86_64 clang 的符号:错误:链接器 命令失败,退出代码为 1(使用 -v 查看调用)
可能值得注意的是,这是 Cocoa 项目的一部分,所以我的 AppDelegate 中的 Connector 类是 #included,这当然是一个 Obj-C 类。我所有的 Obj-C 源文件都有 .mm 扩展名。
我确定该库正常工作,因为我在命令行上使用gcc ... -lftp 编译程序没有问题。这只是 Xcode 的问题。
【问题讨论】:
标签: objective-c xcode linker static-libraries