0

我有一个 C++ 类,它被引用,然后我要声明一个变量。我在objective-c中声明:

cObject obj = cObject();
obj.myFunct("test");

但似乎存在链接器错误。它说:

Undefined symbols for architecture armv7:
  "cObject::cObject()", referenced from:
    -[...] in xxx.o
    ___cxxx_global_var_init in xxx.o
"cObject::myFunct(std::__1:basic_string<char,str::__1::char_traits<char>, str::__1::allocator<char> >)", referenced from:
    -[///] in xxx.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1(use -v to see invocation)

编辑:评论中解决的第一个错误:不要定义一个空的构造函数解决了第一部分。第二部分是指调用 obj.myFunct("test");

4

2 回答 2

1

您需要在myFunct某处定义类的默认构造函数和函数:

cObject::cObject()
{
    ...
}

return_type cObject::myFunct(std::string arg1)
{
    ...
}

如果它们已定义,请确保您在定义它们的目标文件中进行链接(即将源文件添加到您的 Makefile/项目文件/命令行/等)。

于 2012-11-06T21:00:20.327 回答
0

这是一个两部分的答案。

错误的第一部分是因为我有一个空的构造函数。不允许为空,如果为空会抛出错误。为了解决这个问题,我删除了构造函数,编译器默认创建一个。

问题的另一部分来自编译问题。我是什么意思?我的意思是,在这种情况下,文件 test.h 具有未编译的关联数据。通过评论帮助我解决了这个问题,但最终进入了 XCode 项目,并通过单击与该部分关联的小加号按钮将 .cpp 添加到“编译源”部分。成功编译该源代码后,程序运行并完美运行,按计划调用函数并正确声明类。

我不相信@AdamRosenfield、@EdS.、@H2CO3 帮助我度过了难关

于 2012-11-06T22:06:40.670 回答