I'm trying to pass the value using parameter from Objective c class to C++ class. Below is the code I'm using to pass the value:-
std::string cpp_str([str UTF8String], [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
wrapped.ExampleMethod(cpp_str);
While compiling in Xcode its showing the below error:-
Undefined symbols for architecture i386:
"Test::ExampleMethod(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
-[ViewController exampleMethodWithString:] in ViewController.ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Please give reply that how should I do this?
Related
so I've been trying to install OpenCV with C++ on my mac using this tutorial: https://medium.com/#jaskaranvirdi/setting-up-opencv-and-c-development-environment-in-xcode-b6027728003 but I keep getting this error on Xcode:
" 'opencv2/core.hpp' file not found "
I tried setting both Library Search Paths and Header Search Paths to recursive but it didn't change anything
I've also been getting this error on the terminal, I don't know if it's related. I think it's important to note that this isn't my first time trying to install opencv and I don't know if it's the old versions that keep messing with it. I tried to cleanup everything before installing this version but I'm not sure.
Undefined symbols for architecture x86_64:
"cv::namedWindow(cv::String const&, int)", referenced from:
_main in main-55ed98.o
"cv::String::deallocate()", referenced from:
cv::String::~String() in main-55ed98.o
cv::String::operator=(cv::String const&) in main-55ed98.o
"cv::String::allocate(unsigned long)", referenced from:
cv::String::String(char const*) in main-55ed98.o
"cv::imshow(cv::String const&, cv::_InputArray const&)", referenced from:
_main in main-55ed98.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Any suggestions on how to solve these issues please?
I've been trying to build UETorch for OSX 10.12 using Xcode and have encountered the following error:
Undefined symbols for architecture x86_64:
"FlushRenderingCommands()", referenced from:
_CaptureScreenshot in Module.UETorch.cpp.o
InitCapture(UObject*, IntSize const*, FViewport**, APlayerController**, UWorld**, FSceneView**) in Module.UETorch.cpp.o
"FSlateApplication::CurrentApplication", referenced from:
_CaptureScreenshot in Module.UETorch.cpp.o
FSlateApplication::Get() in Module.UETorch.cpp.o
"FSlateApplication::TakeScreenshot(TSharedRef<SWidget, (ESPMode)0> const&, FIntRect const&, TArray<FColor, FDefaultAllocator>&, FIntVector&)", referenced from:
_CaptureScreenshot in Module.UETorch.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
It seems like the ld: symbol(s) not found... part is often fixed by using libstdc++ instead of libc++ and I have tried adding -stdlib=libstdc++ to "Other Linker Flags" as well as linking libstdc++.6.0.9.dylib in the Build Phases section but I am still getting the same error.
I don't have the reputation to comment hence adding it here, you get undefined symbols when you try to use the symbol/Call the function and the linker can not find its definition. So if the definition is from some library then add it during your linking stage.
You can check if the definition is present or not in the library by using nm command, e.g. "nm -D"
I am working on facial recognition in video using opencv. I followed the tutorial on opencv's website(http://docs.opencv.org/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html). I get following error when I try to build my code in xcode.
Undefined symbols for architecture x86_64:
"cv::face::createFisherFaceRecognizer(int, double)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation).
I made a few changes to the code as given in here fatal error: opencv2/contrib/contrib.hpp' file not found (open cv already built)
Please guide me through it as I am new to opencv.
Thanks in advance!
Has anyone had this issue on mac while installing boost or know how to fix? I seem to have everything together but this error. I am using OS X 10.10 & and Xcode 6.1.1.
This is what I used for the install and to make the framework.
http://freddy.cellcore.org/post/79587278354/boost-c-libraries-on-osx-xcode-5
https://gist.github.com/faithfracture/c629ae4c7168216a9856
-------------ERROR BELOW---------------
Undefined symbols for architecture x86_64:
"boost::unit_test::unit_test_main(bool (*)(), int, char**)", referenced from:
_main in test.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture x86_64:
"KeyValue::KeyValue()", referenced from:
Mapper::map() in Mapper.o
"KeyValueList::KeyValueList()", referenced from:
QuickSort::group() in QuickSort.o
"KeyValueList::~KeyValueList()", referenced from:
QuickSort::group() in QuickSort.o
std::vector<KeyValueList, std::allocator<KeyValueList> >::_M_insert_aux(__gnu_cxx::__normal_iterator<KeyValueList*, std::vector<KeyValueList, std::allocator<KeyValueList> > >, KeyValueList const&) in QuickSort.o
void std::_Destroy<KeyValueList>(KeyValueList*) in QuickSort.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
There's no other error in my code, I have 1 warning saying:
Implicit conversion loses integer precision: 'unsigned long' to 'int'
which I don't think would cause a linking error... Could someone help me understand what this error is and how it may have happened?
I can provide some code if needed.
You're trying to link to some code that doesn't exist; or certainly not for x86_64. Where is KeyValue() defined ? - link to that.
You probably included the header file for KeyValue in Mapper and Quicksort but didn't add the source for the compiler to deal with.