Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 无法链接Obj-C项目中的静态C库(Xcode 4.6.3)_Objective C_Xcode_Linker_Static Libraries - Fatal编程技术网

Objective c 无法链接Obj-C项目中的静态C库(Xcode 4.6.3)

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构建一个基本的FTP客户端。我已将其编译并归档为
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
在文件的底部。我将把这个问题留在这里,希望它能在将来帮助其他人