참조되는 C++ 클래스가 있고 변수를 선언 할 것입니다. 나는 객관적으로 선언한다 -c :objective-c 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") 호출을 참조합니다. 즉, 추가 (가 정의 된 경우
cObject::cObject()
{
...
}
return_type cObject::myFunct(std::string arg1)
{
...
}
, 당신은 그들이에서 정의하고있는 오브젝트 파일에 연결하고 있는지 확인하십시오
을 통해 나를 도왔다 @
내가 @AdamRosenfield 무엇에 대한 크레딧을 복용하고 있지 않다, @EdS, 내가 가져온 헤더 파일 – Fallenreaper
@Fallenreaper에 있습니다. 헤더 파일은 충분하지 않습니다. 실제로 함수에 대한 코드를 별도의 소스 파일에 작성하거나 정의를 헤더 파일에 인계해야합니다. –
가져 오기 "test.h"다음 "test.cpp"라는 실제 cpp 파일을 포함하는 어떤 이유로 헤더와 cpp 파일 사이의 참조를 연결하지? 나는 그것이 자동이라고 생각했다. 어쩌면 정의가 "test.cpp"에 있음을 알기 위해 머리말에 추가해야 할 것이 있습니다. ?? – Fallenreaper