Linker error when compiling iPhone app for Simulator using OGRE libraries - objective-c

I'm trying to build an iPhone app using the OGRE framework, and I'm getting a linker error when building for the simulator that I'm not sure how to fix.
I created the Xcode project using the OGRE iPhone template. I'm using the static libraries for OGRE from the main website, Ogre_iOS_4.0_Dependencies_20100623, and trying to build for the iOS 4.1 Simulator. I'm building with Xcode 3.2.4 on Mac OS X 10.6.4.
Compilation seems to work fine, but when it gets to the link stage, I get the following errors:
Ld build/Debug-iphonesimulator/OgreTestApp.app/OgreTestApp normal i386
cd /Users/pauly/Projects/workspaces/games/OgreTestApp
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk -L/Users/pauly/Projects/workspaces/games/OgreTestApp/build/Debug-iphonesimulator -L/Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release -L/Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/iPhoneDependencies/lib/release -F/Users/pauly/Projects/workspaces/games/OgreTestApp/build/Debug-iphonesimulator -filelist /Users/pauly/Projects/workspaces/games/OgreTestApp/build/OgreTestApp.build/Debug-iphonesimulator/OgreTestApp.build/Objects-normal/i386/OgreTestApp.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -lboost_date_time -lboost_thread -lFreeImage -lFreeType -lOIS -lzzip -lOgreMainStatic -lRenderSystem_GLESStatic -lPlugin_BSPSceneManagerStatic -lPlugin_OctreeSceneManagerStatic -lPlugin_ParticleFXStatic -o /Users/pauly/Projects/workspaces/games/OgreTestApp/build/Debug-iphonesimulator/OgreTestApp.app/OgreTestApp
ld: warning: __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::allocate(unsigned long, void const*)has different visibility (default) in /Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release/libOIS.a(OISInputManager.o) and (hidden) in /Users/pauly/Projects/workspaces/games/OgreTestApp/build/OgreTestApp.build/Debug-iphonesimulator/OgreTestApp.build/Objects-normal/i386/OgreFramework.o
ld: warning: std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_create_node(std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)has different visibility (default) in /Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release/libOIS.a(OISInputManager.o) and (hidden) in /Users/pauly/Projects/workspaces/games/OgreTestApp/build/OgreTestApp.build/Debug-iphonesimulator/OgreTestApp.build/Objects-normal/i386/OgreFramework.o
ld: warning: std::char_traits<char>::eq(char const&, char const&)has different visibility (hidden) in /Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release/libFreeImage.a(IPTC.o) and (default) in /Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release/libOgreMainStatic.a(OgreString.o)
ld: warning: std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)has different visibility (hidden) in /Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release/libFreeImage.a(IPTC.o) and (default) in /Users/pauly/Projects/sdk/Ogre/OgreSDK-iPhone/lib/release/libOgreMainStatic.a(OgreScriptCompiler.o)
Undefined symbols:
".objc_class_name_NSAutoreleasePool", referenced from:
literal-pointer#__OBJC#__cls_refs#NSAutoreleasePool in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
".objc_class_name_UIApplication", referenced from:
literal-pointer#__OBJC#__cls_refs#UIApplication in libOIS.a(iPhoneInputManager.o)
".objc_class_name_UIWindow", referenced from:
literal-pointer#__OBJC#__cls_refs#UIWindow in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
".objc_class_name_UIView", referenced from:
.objc_class_name_InputDelegate in libOIS.a(iPhoneInputManager.o)
.objc_class_name_EAGLView in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
".objc_class_name_UIAccelerometer", referenced from:
literal-pointer#__OBJC#__cls_refs#UIAccelerometer in libOIS.a(iPhoneInputManager.o)
literal-pointer#__OBJC#__cls_refs#UIAccelerometer in libOIS.a(iPhoneAccelerometer.o)
".objc_class_name_CAEAGLLayer", referenced from:
literal-pointer#__OBJC#__cls_refs#CAEAGLLayer in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
".objc_class_name_EAGLContext", referenced from:
literal-pointer#__OBJC#__cls_refs#EAGLContext in libRenderSystem_GLESStatic.a(OgreEAGLESContext.o)
".objc_class_name_NSDictionary", referenced from:
literal-pointer#__OBJC#__cls_refs#NSDictionary in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
".objc_class_name_NSNumber", referenced from:
literal-pointer#__OBJC#__cls_refs#NSNumber in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
".objc_class_name_UIScreen", referenced from:
literal-pointer#__OBJC#__cls_refs#UIScreen in libOIS.a(iPhoneInputManager.o)
literal-pointer#__OBJC#__cls_refs#UIScreen in libRenderSystem_GLESStatic.a(OgreEAGLSupport.o)
literal-pointer#__OBJC#__cls_refs#UIScreen in libRenderSystem_GLESStatic.a(OgreEAGLWindow.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
How do I fix this? Thanks.

Probably you need correct precompiled Ogre dependencies for correct iOS SDK version (Masterfalcon regularly publish those dependencies on the ogre3d.org).
Similar linker errors often caused by incorrect iPhoneDependencies (build for older iPhoneSKD that you have).
Just follow the instructions as listed here:
http://www.ogre3d.org/tikiwiki/Building+Ogre+with+CMake
Secion "Configuring for iPhone".
All should build fine.

Related

SCIP 7.0.3 installing using cmake on macOS TBB error

I am trying to build the SCIP 7.0.3 opt suite on my Mac machine and I facing some issues.
I am using CMake to generate the make Makefile and once I type make, I am failing at the linking step. I am attaching the log here
Consolidate compiler generated dependencies of target papilolib
[100%] Linking CXX shared library ../../lib/libpapilo.dylib
ld: warning: object file (../libclusol.a(lusol.f90.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol6b.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol8b.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol_util.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
ld: warning: object file (../libclusol.a(lusol7b.f.o)) was built for newer macOS version (11.4) than being linked (11.0)
Undefined symbols for architecture x86_64:
"tbb::interface5::internal::task_base::destroy(tbb::task&)", referenced from:
void tbb::parallel_invoke<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(), papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(), papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda1'()>(double const&, papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'() const&, papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'() const&, tbb::task_group_context&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(), papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(), papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda1'()>(double const&, papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'() const&, papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'() const&, tbb::task_group_context&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::compress(bool)::'lambda'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda0'()>(double const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda'() const&, tbb::task_group_context&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::ConstraintMatrix<double>::compress(bool)::'lambda1'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda2'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda3'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda4'(), papilo::ConstraintMatrix<double>::compress(bool)::'lambda5'()>(double const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda1'() const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda2'() const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda3'() const&, papilo::ConstraintMatrix<double>::compress(bool)::'lambda4'() const&, tbb::task_group_context&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::Problem<double>::compress(bool)::'lambda'(), papilo::Problem<double>::compress(bool)::'lambda0'(), papilo::Problem<double>::compress(bool)::'lambda1'()>(double const&, papilo::Problem<double>::compress(bool)::'lambda'() const&, papilo::Problem<double>::compress(bool)::'lambda0'() const&, tbb::task_group_context&) in papilolib.cpp.o
void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
...
"tbb::internal::concurrent_vector_base_v3::internal_capacity() const", referenced from:
papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&) in papilolib.cpp.o
papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&) in papilolib.cpp.o
papilo::Sparsify<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&) in papilolib.cpp.o
"tbb::internal::allocate_continuation_proxy::allocate(unsigned long) const", referenced from:
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::dynamic_grainsize_mode<tbb::interface9::internal::adaptive_mode<tbb::interface9::internal::auto_partition_type> >::work_balance<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
void tbb::interface9::internal::partition_type_base<tbb::interface9::internal::auto_partition_type>::execute<tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>, tbb::blocked_range<int> >(double&, tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>&) in papilolib.cpp.o
...
"tbb::internal::allocate_root_with_context_proxy::free(tbb::task&) const", referenced from:
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Sparsify<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::Sparsify<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
...
"tbb::internal::allocate_root_with_context_proxy::allocate(unsigned long) const", referenced from:
void tbb::parallel_invoke<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(), papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(), papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda1'()>(double const&, papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'() const&, papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'() const&, tbb::task_group_context&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
void tbb::parallel_invoke<papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(), papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(), papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda1'()>(double const&, papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'() const&, papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'() const&, tbb::task_group_context&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::ParallelColDetection<double>::computeColHashes(papilo::ConstraintMatrix<double> const&, std::__1::vector<double, std::__1::allocator<double> > const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::Probing<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const>::run(tbb::blocked_range<int> const&, papilo::DominatedCols<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'(tbb::blocked_range<int> const&) const&, tbb::auto_partitioner const&) in papilolib.cpp.o
...
"typeinfo for tbb::task", referenced from:
typeinfo for tbb::empty_task in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda1'()> in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda0'()> in papilolib.cpp.o
typeinfo for tbb::interface9::internal::start_for<tbb::blocked_range<int>, papilo::ParallelRowDetection<double>::computeRowHashes(papilo::ConstraintMatrix<double> const&, unsigned int*)::'lambda'(tbb::blocked_range<int> const&), tbb::auto_partitioner const> in papilolib.cpp.o
typeinfo for tbb::interface9::internal::flag_task in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelRowDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda'()> in papilolib.cpp.o
typeinfo for tbb::internal::function_invoker<papilo::ParallelColDetection<double>::execute(papilo::Problem<double> const&, papilo::ProblemUpdate<double> const&, papilo::Num<double> const&, papilo::Reductions<double>&)::'lambda1'()> in papilolib.cpp.o
...
"__gfortran_generate_error", referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
"__gfortran_st_write", referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8mod_ in libclusol.a(lusol8b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
...
"__gfortran_st_write_done", referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8mod_ in libclusol.a(lusol8b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
...
"__gfortran_stop_string", referenced from:
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
"__gfortran_transfer_array_write", referenced from:
_lu6prt_ in libclusol.a(lusol6b.f.o)
"__gfortran_transfer_character_write", referenced from:
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu7rnk_ in libclusol.a(lusol_util.f.o)
_lu6chk_ in libclusol.a(lusol_util.f.o)
_lu1fad_ in libclusol.a(lusol_util.f.o)
_lu1fac_ in libclusol.a(lusol_util.f.o)
...
"__gfortran_transfer_integer_write", referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
___lusol_MOD_lu6chk.constprop.0 in libclusol.a(lusol.f90.o)
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8mod_ in libclusol.a(lusol8b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
...
"__gfortran_transfer_logical_write", referenced from:
___lusol_MOD_lu1rec in libclusol.a(lusol.f90.o)
_lu1rec_ in libclusol.a(lusol_util.f.o)
"__gfortran_transfer_real_write", referenced from:
___lusol_MOD_lu8rpc in libclusol.a(lusol.f90.o)
___lusol_MOD_lu1fac in libclusol.a(lusol.f90.o)
_lu6prt_ in libclusol.a(lusol6b.f.o)
_lu8adc_ in libclusol.a(lusol8b.f.o)
_lu8adr_ in libclusol.a(lusol8b.f.o)
_lu1fad_ in libclusol.a(lusol_util.f.o)
_lu1fac_ in libclusol.a(lusol_util.f.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]: *** [lib/libpapilo.dylib] Error 1
make[1]: *** [papilo/binaries/CMakeFiles/papilolib.dir/all] Error 2
make: *** [all] Error 2
I installed TBB on my Mac using the command brew install tbb
The above log has to be trimmed in the middle as I am unable to paste the full log.
For full log https://pastebin.com/p7YL4161
edit: I am using macOS latest version and my cmake -DCMAKE_BUILD_TYPE=Release -DIPOPT=off ..
-- Build type: Release
SoPlex with Boost CPP multiprecision libraries.
-- Could NOT find Quadmath (missing: Quadmath_LIBRARY Quadmath_INCLUDE_DIR)
-- Found Boost: /usr/local/lib/cmake/Boost-1.76.0/BoostConfig.cmake (found suitable version "1.76.0", minimum required is "1.58.0") found components: program_options
-- Found Boost: /usr/local/lib/cmake/Boost-1.76.0/BoostConfig.cmake (found version "1.76.0")
-- Could NOT find Quadmath (missing: Quadmath_LIBRARY Quadmath_INCLUDE_DIR)
-- Git hash: e567fef
-- Build shared libraries: ON
-- Build type: Release
-- Finding ZLIB
-- Finding ZLIB - found
-- Finding Readline
-- Finding Readline - found
-- Finding GMP
-- Finding GMP - found
-- Finding PAPILO
-- Finding PAPILO - found
-- Finding Solver "spx"
-- Finding Soplex
-- Finding SOPLEX - found
-- Support CLP: OFF
-- Support CPLEX: OFF
-- Support GLOP: OFF
-- Support GUROBI: OFF
-- Support XPRESS: OFF
-- Support MOSEK: OFF
-- Support QSO: OFF
-- Finding symmetry computation program "bliss"
-- Finding BLISS
-- Could NOT find BLISS (missing: BLISS_INCLUDE_DIR BLISS_INCLUDE_DIRS BLISS_LIBRARIES BLISS_DEFINITIONS)
-- Finding BLISS - not found
-- CodeCoverage: OFF
-- Finding ZIMPL
-- Finding ZIMPL - found
-- Support IPOPT: OFF
-- Support WORHP: OFF
-- Looking for FE_DOWNWARD
-- Looking for FE_DOWNWARD - found
-- Finding CRITERION
-- Could NOT find CRITERION (missing: CRITERION_LIBRARY CRITERION_INCLUDE_DIR)
-- Finding CRITERION - not found
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Could NOT find CRITERION (missing: CRITERION_LIBRARY CRITERION_INCLUDE_DIR)
-- Support AMPL: OFF
-- Build shared libraries: ON
-- Build type: Release
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2")
-- Found GSL: /usr/local/Cellar/gsl/2.6/include (found suitable version "2.6", minimum required is "2.0")
-- Could NOT find CLIQUER (missing: CLIQUER_INCLUDE_DIRS CLIQUER_LIBRARIES)
-- Could NOT find BLISS (missing: BLISS_INCLUDE_DIR BLISS_INCLUDE_DIRS BLISS_LIBRARIES BLISS_DEFINITIONS)
-- Found Boost: /usr/local/lib/cmake/Boost-1.76.0/BoostConfig.cmake (found version "1.76.0") found components: iostreams serialization program_options
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_ZLIB - Success
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2
-- Performing Test PAPILO_USE_BOOST_IOSTREAMS_WITH_BZIP2 - Success
-- Linking solvers: SCIP;SoPlex
-- The following OPTIONAL packages have been found:
* Threads
* BLAS
* PkgConfig
* GSL (required version >= 2.0)
-- The following REQUIRED packages have been found:
* BISON
* FLEX
* TBB
* Readline
* PAPILO
* ZIMPL
* ZLIB
* GMP
* SCIP
* SOPLEX
* boost_headers (required version == 1.76.0)
* Boost
-- The following OPTIONAL packages have not been found:
* Quadmath
* CRITERION
* CLIQUER
* HMETIS
* BLISS
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/username/Downloads/scipoptsuite-7.0.3/build
the compile fails because there is a internal function missing in your tbb lib.
TBB made a switch from tbb -> oneTBB base on the oneapi. We currently don't support the oneTBB but are working on that.
https://formulae.brew.sh/formula/tbb Tbb links to oneTBB so you need to install tbb#2020 (https://formulae.brew.sh/formula/tbb#2020).
Maybe you need to remove or unlink tbb before that to get the build running. Remember to delete the build directory before trying to recompile due to caching issues.
Could you please try that and then report if it worked.
Philipp

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS exception

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
-- Configuring done
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::replace: __pos (which is 18446744073709551615) > this->size() (which is 130)
Aborted (core dumped)
cmake ..
works fine, until I enter cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ... after this command I have the same output for next cmake .. inputs
gdb backtrace:
(gdb) bt
#0 0x00007ffff694b428 in __GI_raise (sig=sig#entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007ffff694d02a in __GI_abort () at abort.c:89
#2 0x00007ffff6f8584d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff6f836b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff6f83701 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff6f83919 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff6fac3f7 in std::__throw_out_of_range_fmt(char const*, ...) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00007ffff7016247 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::replace(unsigned long, unsigned long, char const*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#8 0x00000000006fd555 in cmMakefileTargetGenerator::WriteObjectBuildFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cmSourceFile const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) ()
#9 0x00000000006ff57d in cmMakefileTargetGenerator::WriteObjectRuleFiles(cmSourceFile const&) ()
#10 0x00000000006ffe2f in cmMakefileTargetGenerator::WriteTargetBuildRules() ()
#11 0x000000000070b271 in cmMakefileLibraryTargetGenerator::WriteRuleFiles() ()
#12 0x00000000006f3d26 in cmLocalUnixMakefileGenerator3::Generate() ()
#13 0x00000000006c19bb in cmGlobalGenerator::Generate() ()
#14 0x00000000006cf853 in cmGlobalUnixMakefileGenerator3::Generate() ()
#15 0x0000000000561297 in cmake::Generate() ()
#16 0x0000000000561763 in cmake::Run(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool) ()
#17 0x00000000004bdf94 in do_cmake(int, char const* const*) ()
#18 0x00000000004b98e6 in main ()
Tested on three Ubuntu distro.
cmake versions: 3.10.0 and 3.5.1
What is the possible issue? Can`t find anything similar in Google at all
Fixed in CMake 3.19.1
https://gitlab.kitware.com/cmake/cmake/-/merge_requests/5521
issue: https://gitlab.kitware.com/cmake/cmake/-/issues/21471

LNK2028 LNK2029 when compiling static c++ library in managed c++/clr

As i am pretty much out of ideas and the google results by now have reached the point where they hit ~10 and less, i now turn here in hope of seeing the answer or at least a clue that leads me to the actual solution.
I am creating a project that can be distributed as executable, non-static library and static library.
I want to use the library in a WPF project (C#) which is why i created a simple CLR wrapper.
It all worked very well up until the most recent change introduced into the base-library.
Now, i get linkage errors (5 in total) on all calls to the "main" class in the library project:
1>wrapper.obj : error LNK2028: unresolved token (0A0016EB) "public: class std::vector<struct sqf::diagnostics::stackdump,class std::allocator<struct sqf::diagnostics::stackdump> > __thiscall sqf::vmstack::dump_callstack_diff(class std::shared_ptr<class sqf::callstack>)" (?dump_callstack_diff#vmstack#sqf##$$FQAE?AV?$vector#Ustackdump#diagnostics#sqf##V?$allocator#Ustackdump#diagnostics#sqf###std###std##V?$shared_ptr#Vcallstack#sqf###4##Z) referenced in function "public: class std::vector<struct sqf::diagnostics::stackdump,class std::allocator<struct sqf::diagnostics::stackdump> > __thiscall SqfVm::wrapper::get_stackdump(void)" (?get_stackdump#wrapper#SqfVm##$$FQAE?AV?$vector#Ustackdump#diagnostics#sqf##V?$allocator#Ustackdump#diagnostics#sqf###std###std##XZ)
1>wrapper.obj : error LNK2028: unresolved token (0A0016F5) "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall sqf::virtualmachine::preprocess(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?preprocess#virtualmachine#sqf##$$FQAE?AV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std##V34#AA_N0#Z) referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall SqfVm::wrapper::preprocess(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?preprocess#wrapper#SqfVm##$$FQAE?AV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std##V34#AA_N0#Z)
1>wrapper.obj : error LNK2028: unresolved token (0A0016F6) "public: struct sqf::parse::astnode __thiscall sqf::virtualmachine::parse_sqf_cst(class std::basic_string_view<char,struct std::char_traits<char> >,bool &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?parse_sqf_cst#virtualmachine#sqf##$$FQAE?AUastnode#parse#2#V?$basic_string_view#DU?$char_traits#D#std###std##AA_NV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##6##Z) referenced in function "public: struct sqf::parse::astnode __thiscall sqf::virtualmachine::parse_sqf_cst(class std::basic_string_view<char,struct std::char_traits<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?parse_sqf_cst#virtualmachine#sqf##$$FQAE?AUastnode#parse#2#V?$basic_string_view#DU?$char_traits#D#std###std##V?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##6##Z)
1>wrapper.obj : error LNK2019: unresolved external symbol "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall sqf::virtualmachine::preprocess(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?preprocess#virtualmachine#sqf##$$FQAE?AV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std##V34#AA_N0#Z) referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall SqfVm::wrapper::preprocess(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?preprocess#wrapper#SqfVm##$$FQAE?AV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##std##V34#AA_N0#Z)
1>wrapper.obj : error LNK2019: unresolved external symbol "public: struct sqf::parse::astnode __thiscall sqf::virtualmachine::parse_sqf_cst(class std::basic_string_view<char,struct std::char_traits<char> >,bool &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?parse_sqf_cst#virtualmachine#sqf##$$FQAE?AUastnode#parse#2#V?$basic_string_view#DU?$char_traits#D#std###std##AA_NV?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##6##Z) referenced in function "public: struct sqf::parse::astnode __thiscall sqf::virtualmachine::parse_sqf_cst(class std::basic_string_view<char,struct std::char_traits<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?parse_sqf_cst#virtualmachine#sqf##$$FQAE?AUastnode#parse#2#V?$basic_string_view#DU?$char_traits#D#std###std##V?$basic_string#DU?$char_traits#D#std##V?$allocator#D#2##6##Z)
1>wrapper.obj : error LNK2019: unresolved external symbol "public: class std::vector<struct sqf::diagnostics::stackdump,class std::allocator<struct sqf::diagnostics::stackdump> > __thiscall sqf::vmstack::dump_callstack_diff(class std::shared_ptr<class sqf::callstack>)" (?dump_callstack_diff#vmstack#sqf##$$FQAE?AV?$vector#Ustackdump#diagnostics#sqf##V?$allocator#Ustackdump#diagnostics#sqf###std###std##V?$shared_ptr#Vcallstack#sqf###4##Z) referenced in function "public: class std::vector<struct sqf::diagnostics::stackdump,class std::allocator<struct sqf::diagnostics::stackdump> > __thiscall SqfVm::wrapper::get_stackdump(void)" (?get_stackdump#wrapper#SqfVm##$$FQAE?AV?$vector#Ustackdump#diagnostics#sqf##V?$allocator#Ustackdump#diagnostics#sqf###std###std##XZ)
1>wrapper.obj : error LNK2019: unresolved external symbol "public: __thiscall sqf::virtualmachine::virtualmachine(class Logger &,unsigned __int64)" (??0virtualmachine#sqf##QAE#AAVLogger##_K#Z) referenced in function "public: __thiscall sqf::virtualmachine::virtualmachine(class Logger &)" (??0virtualmachine#sqf##QAE#AAVLogger###Z)
1>D:\Git\SQFvm\clrBridge\Release\clrBridge.dll : fatal error LNK1120: 7 unresolved externals
The projects, can both be found here:
The C++ Project https://github.com/SQFvm/vm
The C++/CLR Project https://github.com/SQFvm/ClrBridge
Was able to get rid of the LNK2028 issues by adding another separation layer (wrapper.cpp & wrapper.h) and then putting a #pragma unmanaged at the top of the cpp file.
Only the LNK2019 issues are left now
For those users who may find this question in the future, here is what helped me:
Separating all classes
Adding #pragma managed to the an unmanaged wrapper for the actual class (got rid of the LNK2028)
One of the following commits:
Moving invalidly placed C method out of external "C" that is not involved in any way normally to the static library built but MAY intefere with the CLR build process as the header still was there
Altering the arangement of the constructor
Hope this helps you.

Undefined symbols for architecture x86_64 using C libraries

I have been having a lot of linker errors. I made sure to install all of the libraries I need via macports. I sorted out all of the include errors, but now I have a lot of linker errors left.
HEADER_SEARCH_PATHS = /opt/local/include /usr/include /opt/local/include/json
LIBRARY_SEARCH_PATHS = /opt/local/lib /usr/local/lib
Build target PianoLounge
Ld /Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug/PianoLounge.app/Contents/MacOS/PianoLounge normal x86_64
cd /Users/jordan/Projects/Cocoa/PianoLounge
setenv MACOSX_DEPLOYMENT_TARGET 10.8
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -L/Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug -L/opt/local/lib -L/usr/local/lib -F/Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug -filelist /Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Intermediates/PianoLounge.build/Debug/PianoLounge.build/Objects-normal/x86_64/PianoLounge.LinkFileList -mmacosx-version-min=10.8 -fobjc-arc -fobjc-link-runtime -framework Cocoa -o /Users/jordan/Library/Developer/Xcode/DerivedData/PianoLounge-ajgojrzszrergafgvyuliphwxcpg/Build/Products/Debug/PianoLounge.app/Contents/MacOS/PianoLounge
Undefined symbols for architecture x86_64:
"_gcry_cipher_close", referenced from:
_PianoDestroyPartner in piano.o
"_gcry_cipher_decrypt", referenced from:
_PianoDecryptString in crypt.o
"_gcry_cipher_encrypt", referenced from:
_PianoEncryptString in crypt.o
"_gcry_cipher_open", referenced from:
_PianoInit in piano.o
"_gcry_cipher_setkey", referenced from:
_PianoInit in piano.o
"_gnutls_bye", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_certificate_allocate_credentials", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_certificate_free_credentials", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_certificate_get_peers", referenced from:
_WaitressTlsVerify in waitress.o
"_gnutls_certificate_type_get", referenced from:
_WaitressTlsVerify in waitress.o
"_gnutls_credentials_set", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_deinit", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_handshake", referenced from:
_WaitressConnect in waitress.o
"_gnutls_init", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_record_recv", referenced from:
_WaitressGnutlsRead in waitress.o
"_gnutls_record_send", referenced from:
_WaitressGnutlsWrite in waitress.o
"_gnutls_set_default_priority", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_transport_set_ptr", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_transport_set_pull_function", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_transport_set_push_function", referenced from:
_WaitressFetchCall in waitress.o
"_gnutls_x509_crt_deinit", referenced from:
_WaitressTlsVerify in waitress.o
"_gnutls_x509_crt_get_fingerprint", referenced from:
_WaitressTlsVerify in waitress.o
"_gnutls_x509_crt_import", referenced from:
_WaitressTlsVerify in waitress.o
"_gnutls_x509_crt_init", referenced from:
_WaitressTlsVerify in waitress.o
"_json_object_array_add", referenced from:
_PianoRequest in request.o
"_json_object_array_get_idx", referenced from:
_PianoResponse in response.o
"_json_object_array_length", referenced from:
_PianoResponse in response.o
"_json_object_get_boolean", referenced from:
_PianoResponse in response.o
_PianoJsonParseStation in response.o
"_json_object_get_double", referenced from:
_PianoResponse in response.o
"_json_object_get_int", referenced from:
_PianoResponse in response.o
"_json_object_get_object", referenced from:
_PianoResponse in response.o
"_json_object_get_string", referenced from:
_PianoResponse in response.o
_PianoJsonStrdup in response.o
"_json_object_new_array", referenced from:
_PianoRequest in request.o
"_json_object_new_boolean", referenced from:
_PianoRequest in request.o
"_json_object_new_int", referenced from:
_PianoRequest in request.o
"_json_object_new_object", referenced from:
_PianoRequest in request.o
"_json_object_new_string", referenced from:
_PianoRequest in request.o
"_json_object_object_add", referenced from:
_PianoRequest in request.o
"_json_object_object_get", referenced from:
_PianoResponse in response.o
_PianoJsonStrdup in response.o
_PianoJsonParseStation in response.o
"_json_object_put", referenced from:
_PianoRequest in request.o
_PianoResponse in response.o
"_json_object_to_json_string", referenced from:
_PianoRequest in request.o
"_json_tokener_parse", referenced from:
_PianoResponse in response.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 looks like you are missing the required libraries gnutls, gcrypt and json to link against. Unless you tell Xcode what libraries to link against it won't have any idea. It will look something like this:
-lgnutls -lgcrypt -ljson
(That is an example, I am not sure what libraries specifically are required).
You'll want to add those as extra libraries to link against in your Xcode project.

Linker error in Visual C++ Windows Forms project

I am using SQLAPI++ to connect to Oracle from my Visual C++ application.
I can easily connect to database from VC++ only when I do it in Win32 console appliation mode.
But when I try to do the same in Windows Forms Project I get the following linker errors.
Can someone help me with this because I need the values entered in the form to be inserted into database.
My code is:
#include <SQLAPI.h>
#include "stdafx.h"
#include "Form1.h"
#include <stdio.h>
using namespace sqlapi;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
SAConnection con;
SACommand cmd;
try
{
con.Connect("", "scott", "tiger", SA_Oracle_Client);
cmd.setConnection(&con);
cmd.setCommandText(
"Create table test_tbl(fid integer, fvarchar20 varchar(20), fblob blob)");
cmd.Execute();
cmd.setCommandText(
"Insert into test_tbl(fid, fvarchar20) values (1, 'Some string (1)')");
cmd.Execute();
con.Commit();
}
catch(SAException &x)
{
try
{
con.Rollback();
}
catch(SAException &)
{
}
}
// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew Form1());
return 0;
}
And the errors I get are
sqlapi.obj : error LNK2028: unresolved token (0A000010) "public: void __clrcall SAConnection::Rollback(void)" (?Rollback#SAConnection##$$FQAMXXZ) referenced in function __catch$?main##$$HYMHP$01AP$AAVString#System###Z$0
sqlapi.obj : error LNK2028: unresolved token (0A000016) "public: void __clrcall SAConnection::Commit(void)" (?Commit#SAConnection##$$FQAMXXZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A000018) "public: void __clrcall SACommand::setCommandText(class SAString const &,enum SACommandType_t)" (?setCommandText#SACommand##$$FQAMXABVSAString##W4SACommandType_t###Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A000019) "public: void __clrcall SACommand::setConnection(class SAConnection *)" (?setConnection#SACommand##$$FQAMXPAVSAConnection###Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001A) "public: __clrcall SAString::~SAString(void)" (??1SAString##$$FQAM#XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001B) "public: __clrcall SAString::SAString(char const *)" (??0SAString##$$FQAM#PBD#Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001C) "public: void __clrcall SAConnection::Connect(class SAString const &,class SAString const &,class SAString const &,enum SAClient_t,void (__cdecl*)(class SAConnection &,enum SAConnectionHandlerType_t))" (?Connect#SAConnection##$$FQAMXABVSAString##00W4SAClient_t##P6AXAAV1#W4SAConnectionHandlerType_t###Z#Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001D) "public: virtual __clrcall SACommand::~SACommand(void)" (??1SACommand##$$FUAM#XZ) referenced in function __catch$?main##$$HYMHP$01AP$AAVString#System###Z$0
sqlapi.obj : error LNK2028: unresolved token (0A00001E) "public: __clrcall SACommand::SACommand(void)" (??0SACommand##$$FQAM#XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001F) "public: virtual __clrcall SAConnection::~SAConnection(void)" (??1SAConnection##$$FUAM#XZ) referenced in function __catch$?main##$$HYMHP$01AP$AAVString#System###Z$0
sqlapi.obj : error LNK2028: unresolved token (0A000020) "public: __clrcall SAConnection::SAConnection(void)" (??0SAConnection##$$FQAM#XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
sqlapi.obj : error LNK2019: unresolved external symbol "public: virtual __clrcall SAConnection::~SAConnection(void)" (??1SAConnection##$$FUAM#XZ) referenced in function __catch$?main##$$HYMHP$01AP$AAVString#System###Z$0
sqlapi.obj : error LNK2019: unresolved external symbol "public: virtual __clrcall SACommand::~SACommand(void)" (??1SACommand##$$FUAM#XZ) referenced in function __catch$?main##$$HYMHP$01AP$AAVString#System###Z$0
sqlapi.obj : error LNK2019: unresolved external symbol "public: void __clrcall SAConnection::Rollback(void)" (?Rollback#SAConnection##$$FQAMXXZ) referenced in function __catch$?main##$$HYMHP$01AP$AAVString#System###Z$0
sqlapi.obj : error LNK2019: unresolved external symbol "public: void __clrcall SAConnection::Commit(void)" (?Commit#SAConnection##$$FQAMXXZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main##$$HYMHP$01AP$AAVString#System###Z)
I dont get any errors in Win32 console mode.
I've even added the libraries in additional dependencies also.
I haven't worked with C++/CLI very much, but I think your having the same problem as answered in this question error linking to oci libraries from vc++.
I also found a comment at the bottom of this thread http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/44fc45c4-10da-4670-bc5d-2f505ee32fd1 that implies C++ windows forms projects must be in /clr:pure mode. I'm guessing that might be the difference from a console app. I also wonder if you are using a later version of Visual Studio if you could get away with using /clr mode for Window Forms?