Trying build OpenNI samples with CMakeLists.txt but getting error - compilation

I have mad my own CMakeLists.txt file to build OpenNI samples. I successfully build NiSimpleViewer. But when try with NiUserTracker I get this error:
35 warnings generated.
Linking CXX executable main
ld: warning: path '/usr/lib/libOpenNI.dylib' following -L not a directory
Undefined symbols for architecture x86_64:
"DrawDepthMap(xn::DepthMetaData const&, xn::SceneMetaData const&)", referenced from:
glutDisplay() in main.cpp.o
"MyPoseInProgress(xn::PoseDetectionCapability&, char const*, unsigned int, XnPoseDetectionStatus, void*)", referenced from:
_main in main.cpp.o
"MyCalibrationInProgress(xn::SkeletonCapability&, unsigned int, XnCalibrationStatus, void*)", referenced from:
_main in main.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)
make[2]: *** [main] Error 1
make[1]: *** [CMakeFiles/main.dir/all] Error 2
make: *** [all] Error 2
This is the CMakeLists I use. Plese tell me what's wrong with it?
http://pastebin.com/SMYjjU35
The contents of folder outside build/ are
CMakeLists.txt Libs build opengles.cpp
GL SceneDrawer.cpp glh opengles.h
GLES SceneDrawer.h main.cpp

I guess, it's because of this line:
link_directories(${OPENNI_LIBRARY})
The link_directories() command sets path where libraries should be searched for, so you need something like ${OPENNI_LIBRARY_DIRS} there.

Related

ld: symbol(s) not found for architecture x86_64 MacOS Catalina

I'm getting this error when I try to build this software available in GitHub (https://github.com/fabienbaron/bsmem). I'm using cmake to build it.
2 warnings generated.
[ 33%] Building Fortran object src/CMakeFiles/bsmem.dir/bsmemf.f.o
[ 50%] Building C object src/CMakeFiles/bsmem.dir/free_fits.c.o
[ 66%] Building C object src/CMakeFiles/bsmem.dir/read_fits.c.o
[ 83%] Building Fortran object src/CMakeFiles/bsmem.dir/vector.f.o
[100%] Linking C executable ../../bin/bsmem Undefined symbols for architecture x86_64:
"_mecopy_", referenced from:
_icf_ in bsmemf.f.o
_tricf_ in bsmemf.f.o "_meinit_", referenced from:
_bsmem in bsmem.c.o "_mem4_", referenced from:
_bsmem in bsmem.c.o "_memset_", referenced from:
_bsmem in bsmem.c.o "_meswap_", referenced from:
_udiag_ in bsmemf.f.o "_movie4_", referenced from:
_bsmem in bsmem.c.o
ld: symbol(s) not found for architecture x86_64
collect2: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [../bin/bsmem] Error 1 make[1]: *** [src/CMakeFiles/bsmem.dir/all]
Error 2 make: *** [all] Error 2
Any idea on how to fix this problem?
Thanks.

How to connect OpenCV to Xcode?

The path:
/usr/local/include
/usr/local/lib
Outputs such an error:
Undefined symbols for architecture x86_64:
"cv::String::deallocate()", referenced from:
cv::String::~String() in main.o
cv::String::operator=(cv::String const&) 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)
How to fix this error?

Using igraph on OSX installed via homebrew

I am new for a C-programming and want to use igraph library.
I installed it via homebrew.
brew install igraph
After it i copy first example from igraph c tutorial in my main.cpp and change include igraph to
#include "igraph/igraph.h"
And Clion was suggest igraph functions and types.
Trying to build this a have error messages:
/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build
/Users/username/development/graph_clustring/cmake-build-debug --target
graph_clustring -- -j 4
[ 50%] Linking CXX executable graph_clustring
Undefined symbols for architecture x86_64:
"_igraph_destroy", referenced from:
_main in main.cpp.o
"_igraph_diameter", referenced from:
_main in main.cpp.o
"_igraph_erdos_renyi_game", referenced from:
_main in main.cpp.o
"_igraph_rng_default", referenced from:
_main in main.cpp.o
"_igraph_rng_seed", referenced from:
_main in main.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)
make[3]: *** [graph_clustring] Error 1
make[2]: *** [CMakeFiles/graph_clustring.dir/all] Error 2
make[1]: *** [CMakeFiles/graph_clustring.dir/rule] Error 2
make: *** [graph_clustring] Error 2e
I think that I should fix my CMake file, and help CMake find lib isntalled via homebrew.
CMake file:
cmake_minimum_required(VERSION 3.8)
project(graph_clustring)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(graph_clustring ${SOURCE_FILES})
I was able to solve the problem by adding target_link_libraries command to a CMake. It should look like this
make_minimum_required(VERSION 3.8)
enter code here
project(graph_clustring)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp)
add_executable(graph_clustring ${SOURCE_FILES})
target_link_libraries(graph_clustring, igraph.a)

C++ Boost filesystem library compilation error

I am new to c++ and I am using CLion on a Mac. I would like to use the boost 1.65.0 filesystem library. When I add the following import statement the console app doesn't compile.
#include <boost/filesystem.hpp>
I get the following error:
Undefined symbols for architecture x86_64:
"boost::system::system_category()", referenced from:
___cxx_global_var_init.2 in main.cpp.o
"boost::system::generic_category()", referenced from:
boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in main.cpp.o
boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in main.cpp.o
___cxx_global_var_init in main.cpp.o
___cxx_global_var_init.1 in main.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)
make[3]: *** [sandbox] Error 1
make[2]: *** [CMakeFiles/sandbox.dir/all] Error 2
make[1]: *** [CMakeFiles/sandbox.dir/rule] Error 2
make: *** [sandbox] Error 2
CMake file:
cmake_minimum_required(VERSION 3.8)
project(sandbox)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES src/main.cpp)
find_package(Boost)
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIR})
endif()
add_executable(sandbox ${SOURCE_FILES})
target_link_libraries (sandbox ${Boost_LIBRARIES})
Other libraries such as the boost string library works fine. But I cant use the filesystem library. Any idea what I am doing wrong?

Xcode error - Undefined symbols for architecture x86_64:

I have this error in XCode:
Undefined symbols for architecture x86_64:
"Parser::Parser(char const*)", referenced from:
___cxx_global_var_init 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)
Very common reason is using a static library that is compiled for 32 bit only.

Resources