:-1: error: symbol(s) not found for architecture x86_64
-
Hi
I am quite new to QT. I have created a subdirs project that has the main app part and also test unit project in it. However when i build the whole project i get errors of the kinds below:
Undefined symbols for architecture x86_64: "user::setStatus(user::Status)", referenced from: TestUser::cannotSetNullUserStatus() in test_user.o TestUser::canChangeUserStatusToOffline() in test_user.o TestUser::canChangeUserStatusToOnline() in test_user.o TestUser::copyOfUserSharesStatus1() in test_user.o TestUser::copyOfUserSharedStatus2() in test_user.o "user::operator=(user const&)", referenced from: void std::__1::list<user, std::__1::allocator<user> >::assign<user const*>(user const*, user const*, std::__1::enable_if<__is_input_iterator<user const*>::value, void>::type*) in test_group.o void std::__1::list<user, std::__1::allocator<user> >::assign<std::__1::__list_const_iterator<user, void*> >(std::__1::__list_const_iterator<user, void*>, std::__1::__list_const_iterator<user, void*>, std::__1::enable_if<__is_input_iterator<std::__1::__list_const_iterator<user, void*> >::value, void>::type*) in test_group.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [11]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [11], char const*, char const*, char const*, int)", referenced from: TestGroup::copyOfGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName2() in test_group.o``` Can anyone please guide me where i am wrong? I can share in the cpp code file too:
user::Status& user::setStatus(user::Status status) {
if (!isNull()) {
userStatus = new user::Status;
*userStatus = status;
}
return *userStatus;
}The header file has this method declaration too. I need to somehow finish this soon, and i tried googling but i dont understand what i should do. Please help.
-
Hi and welcome to devnet,
What version of Qt are you using ?
On what platform ?
With which compiler ? -
@jsulm :
so i have the main project that has the following contents:
TEMPLATE = subdirs SUBDIRS += \ Test \ QTConsoleApp Test.depends = QTConsoleApp
The QTConsoleApp has the following pro file:
QT += core QT -= gui CONFIG += c++11 TARGET = QTConsoleApp CONFIG += console CONFIG -= app_bundle TEMPLATE = lib SOURCES += main.cpp \ contact.cpp \ user.cpp \ group.cpp # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS DEFINES += QTCONSOLEAPP_LIBRARY # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 HEADERS += \ contact.h \ user.h \ group.h
The last one has the following pro content:
#------------------------------------------------- # # Project created by QtCreator 2017-06-18T23:06:36 # #------------------------------------------------- QT += testlib QT -= gui TARGET = test_user CONFIG += console CONFIG -= app_bundle TEMPLATE = app # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ test_user.cc \ test_group.cc DEFINES += SRCDIR=\\\"$$PWD/\\\" INCLUDEPATH += ../QTConsoleApp stdlib -=libc++ stdlib -=libstdc++
Thanks
-
@Dhara said in :-1: error: symbol(s) not found for architecture x86_64:
TEMPLATE = lib
why is you console app a lib?
-
@Dhara The question is actually: should it be an executable or a lib? So, do you want to execute QTConsoleApp? Because you cannot execute a library.
It doesn't have to be a lib to be able to access its source file from Test project. You can just add needed source files in the pro file of your Test project. -
@jsulm : i actually want to run the test project and see if the test cases pass or fail. I however changed it to app too :D.. but i get the same error . I am unfortunately knew to C++ and qT too so i wasn't even aware what i should pick so i think either one should be ok : exe types or even lib.
-
@jsulm : I updated the code and i get the same kind of error but i think its reduced a little bit:
Undefined symbols for architecture x86_64: "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [11]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [11], char const*, char const*, char const*, int)", referenced from: TestGroup::copyOfGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName2() in test_group.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [1]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [1], char const*, char const*, char const*, int)", referenced from: TestUser::nullUserUriIsEmpty() in test_user.o TestUser::nullUserNameIsEmpty() in test_user.o TestUser::initialNameForNamelessUserIsEmpty() in test_user.o TestUser::cannotSetNullUserName() in test_user.o TestGroup::nullGroupUriIsEmpty() in test_group.o TestGroup::nullGroupNameIsEmpty() in test_group.o TestGroup::initialNameForNamelessGroupIsEmpty() in test_group.o ...
i have not pasted the other errors, but are of similar kinds.
-
@jsulm I moved the files from qTConsoleApp to the Test project. So now i just have 2 pro files. The main one and the Test Project one's.
main pro:
TEMPLATE = subdirs SUBDIRS += \ Test
Test project's pro:
#------------------------------------------------- # # Project created by QtCreator 2017-06-18T23:06:36 # #------------------------------------------------- QT += testlib QT -= gui TARGET = test_user CONFIG += console CONFIG -= app_bundle TEMPLATE = app # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ test_user.cc \ test_group.cc \ contact.cpp \ user.cpp \ group.cpp DEFINES += SRCDIR=\\\"$$PWD/\\\" INCLUDEPATH += ../QTConsoleApp stdlib -=libc++ stdlib -=libstdc++ HEADERS += \ contact.h \ user.h \ group.h
Yes,, it does have the line you wrote.
-
@jsulm : also, here is the whole error message
Undefined symbols for architecture x86_64: "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [11]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [11], char const*, char const*, char const*, int)", referenced from: TestGroup::copyOfGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName2() in test_group.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [1]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [1], char const*, char const*, char const*, int)", referenced from: TestUser::nullUserUriIsEmpty() in test_user.o TestUser::nullUserNameIsEmpty() in test_user.o TestUser::initialNameForNamelessUserIsEmpty() in test_user.o TestUser::cannotSetNullUserName() in test_user.o TestGroup::nullGroupUriIsEmpty() in test_group.o TestGroup::nullGroupNameIsEmpty() in test_group.o TestGroup::initialNameForNamelessGroupIsEmpty() in test_group.o ... "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [20]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [20], char const*, char const*, char const*, int)", referenced from: TestUser::canInitUriWithCtorForNamedUser() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [22]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [22], char const*, char const*, char const*, int)", referenced from: TestUser::canInitUriWithCtorForeNamelessUser() in test_user.o TestUser::copyOfUserHasSameUri() in test_user.o TestUser::contactFromUserHasSameUri() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [23]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [23], char const*, char const*, char const*, int)", referenced from: TestGroup::canInitUriWithCtorForeNamelessGroup() in test_group.o TestGroup::canInitUriWithCtorForNamedGroup() in test_group.o TestGroup::copyOfGroupHasSameUri() in test_group.o TestGroup::contactFromGroupHasSameUri() in test_group.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [4]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [4], char const*, char const*, char const*, int)", referenced from: TestUser::canInitNameWithCtor() in test_user.o TestUser::copyOfUserHasSameName() in test_user.o TestUser::contactFromUserHasSameName() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [6]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [6], char const*, char const*, char const*, int)", referenced from: TestUser::canChangeUserNameIfWasUnset() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [7]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [7], char const*, char const*, char const*, int)", referenced from: TestUser::canChangeUserNameIfWasSet() in test_user.o TestUser::copyOfUserSharesName1() in test_user.o TestUser::copyOfUserSharesName2() in test_user.o TestUser::contactFromUserSharesName1() in test_user.o TestUser::contactFromUserSharesName2() in test_user.o TestGroup::canInitNameWithCtor() in test_group.o TestGroup::canChangeGroupNameIfWasUnset() in test_group.o ... "contact::name()", referenced from: TestUser::nullUserNameIsEmpty() in test_user.o TestUser::canInitNameWithCtor() in test_user.o TestUser::initialNameForNamelessUserIsEmpty() in test_user.o TestUser::cannotSetNullUserName() in test_user.o TestUser::canChangeUserNameIfWasUnset() in test_user.o TestUser::canChangeUserNameIfWasSet() in test_user.o TestUser::copyOfUserHasSameName() in test_user.o ... "contact::setUri(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from: user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_user.o user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_user.o user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_group.o user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_group.o "contact::setName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from: TestUser::cannotSetNullUserName() in test_user.o TestUser::canChangeUserNameIfWasUnset() in test_user.o TestUser::canChangeUserNameIfWasSet() in test_user.o TestUser::copyOfUserSharesName1() in test_user.o TestUser::copyOfUserSharesName2() in test_user.o TestUser::contactFromUserSharesName1() in test_user.o TestUser::contactFromUserSharesName2() in test_user.o ...
-
@Dhara said in :-1: error: symbol(s) not found for architecture x86_64:
I moved the files from qTConsoleApp to the Test project
Why?! They belong to qTConsoleApp, not to the test project! Don't move them, just reference them in Test pro file:
SOURCES += \ test_user.cc \ test_group.cc \ ..\QTConsoleApp\contact.cpp \ ..\QTConsoleApp\user.cpp \ ..\QTConsoleApp\group.cpp
-
@jsulm , i have got the files back and added the sources too, the error message i get is :
Undefined symbols for architecture x86_64: "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [11]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [11], char const*, char const*, char const*, int)", referenced from: TestGroup::copyOfGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName1() in test_group.o TestGroup::contactFromGroupSharesName2() in test_group.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [1]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [1], char const*, char const*, char const*, int)", referenced from: TestUser::nullUserUriIsEmpty() in test_user.o TestUser::nullUserNameIsEmpty() in test_user.o TestUser::initialNameForNamelessUserIsEmpty() in test_user.o TestUser::cannotSetNullUserName() in test_user.o TestGroup::nullGroupUriIsEmpty() in test_group.o TestGroup::nullGroupNameIsEmpty() in test_group.o TestGroup::initialNameForNamelessGroupIsEmpty() in test_group.o ... "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [20]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [20], char const*, char const*, char const*, int)", referenced from: TestUser::canInitUriWithCtorForNamedUser() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [22]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [22], char const*, char const*, char const*, int)", referenced from: TestUser::canInitUriWithCtorForeNamelessUser() in test_user.o TestUser::copyOfUserHasSameUri() in test_user.o TestUser::contactFromUserHasSameUri() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [23]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [23], char const*, char const*, char const*, int)", referenced from: TestGroup::canInitUriWithCtorForeNamelessGroup() in test_group.o TestGroup::canInitUriWithCtorForNamedGroup() in test_group.o TestGroup::copyOfGroupHasSameUri() in test_group.o TestGroup::contactFromGroupHasSameUri() in test_group.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [4]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [4], char const*, char const*, char const*, int)", referenced from: TestUser::canInitNameWithCtor() in test_user.o TestUser::copyOfUserHasSameName() in test_user.o TestUser::contactFromUserHasSameName() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [6]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [6], char const*, char const*, char const*, int)", referenced from: TestUser::canChangeUserNameIfWasUnset() in test_user.o "bool QTest::qCompare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, char [7]>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const (&) [7], char const*, char const*, char const*, int)", referenced from: TestUser::canChangeUserNameIfWasSet() in test_user.o TestUser::copyOfUserSharesName1() in test_user.o TestUser::copyOfUserSharesName2() in test_user.o TestUser::contactFromUserSharesName1() in test_user.o TestUser::contactFromUserSharesName2() in test_user.o TestGroup::canInitNameWithCtor() in test_group.o TestGroup::canChangeGroupNameIfWasUnset() in test_group.o ... "contact::name()", referenced from: TestUser::nullUserNameIsEmpty() in test_user.o TestUser::canInitNameWithCtor() in test_user.o TestUser::initialNameForNamelessUserIsEmpty() in test_user.o TestUser::cannotSetNullUserName() in test_user.o TestUser::canChangeUserNameIfWasUnset() in test_user.o TestUser::canChangeUserNameIfWasSet() in test_user.o TestUser::copyOfUserHasSameName() in test_user.o ... "contact::setUri(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from: user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_user.o user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_user.o user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_group.o user::user(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in test_group.o "contact::setName(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from: TestUser::cannotSetNullUserName() in test_user.o TestUser::canChangeUserNameIfWasUnset() in test_user.o TestUser::canChangeUserNameIfWasSet() in test_user.o TestUser::copyOfUserSharesName1() in test_user.o TestUser::copyOfUserSharesName2() in test_user.o TestUser::contactFromUserSharesName1() in test_user.o TestUser::contactFromUserSharesName2() in test_user.o ...