0.3 C
New York
Sunday, February 23, 2025

c++ – Undefined symbols for structure arm64 whereas constructing cpp thrift lib for iOS


I’m attempting to construct a number of lib for iOS however I get error for thrift lib model 0.21.0

beneath is the config that I’m utilizing to construct it

ExternalProject_Add(thrift
        SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${THRIFT_DIR}
        INSTALL_DIR ${THIRDPARTY_INSTALL_DIR}
        CMAKE_ARGS ${EXTERNAL_PROJECT_CMAKE_ARGS}
            -DOPENSSL_ROOT_DIR=${OPENSSL_INSTALL_DIR}
            -DOPENSSL_CRYPTO_LIBRARY=${OPENSSL_INSTALL_DIR}/lib/libcrypto.a
            -DOPENSSL_SSL_LIBRARY=${OPENSSL_INSTALL_DIR}/lib/libssl.a
            -DBoost_INCLUDE_DIR=${BOOST_INCLUDE_DIR}
            -DWITH_ZLIB=${ZLIB_INSTALL_DIR}
            -DCMAKE_FIND_LIBRARY_SUFFIXES=".a"
            -DBUILD_SHARED_LIBS=ON
            -DBUILD_JAVA=OFF
            -DBUILD_JAVASCRIPT=OFF
            -DBUILD_NODEJS=OFF
            -DBUILD_PYTHON=OFF
            -DBUILD_PY3=OFF
            -DBUILD_QT=OFF
            -DBUILD_QT4=OFF
            -DBUILD_RUBY=OFF
            -DBUILD_PHP=OFF
            -DBUILD_SWIFT=OFF
            -DBUILD_TESTING=OFF
            
            BUILD_COMMAND make clear && make CFLAGS+=-DOPENSSL_NO_SSL3 CFLAGS+=-fPIC CXXFLAGS+=-DOPENSSL_NO_SSL3 CXXFLAGS+=-fPIC
        INSTALL_COMMAND make set up
    )

I get error

[ 93%] Linking CXX shared library ../libthriftz.dylib
cd /Customers/Technaharia/Downloads/Demo/build-ios/SDKThirdParty-prefix/src/SDKThirdParty-build/thrift-prefix/src/thrift-build/lib/cpp && /Functions/CMake.app/Contents/bin/cmake -E cmake_link_script CMakeFiles/thriftz.dir/hyperlink.txt --verbose=1
Undefined symbols for structure arm64:
  "apache::thrift::GlobalOutput", referenced from:
      apache::thrift::transport::TZlibTransport::checkZlibRvNothrow(int, char const*) in TZlibTransport.cpp.o
  "apache::thrift::protocol::TProtocol::skip_virt(apache::thrift::protocol::TType)", referenced from:
      vtable for apache::thrift::protocol::TProtocolDefaults in THeaderProtocol.cpp.o
  "apache::thrift::protocol::TProtocol::~TProtocol()", referenced from:
      std::__1::__shared_ptr_emplace<:thrift::protocol::tbinaryprotocolt apache::thrift::protocol::tnetworkbigendian="">, std::__1::allocator<:thrift::protocol::tbinaryprotocolt apache::thrift::protocol::tnetworkbigendian=""> > >::~__shared_ptr_emplace() in THeaderProtocol.cpp.o
      std::__1::__shared_ptr_emplace<:thrift::protocol::tbinaryprotocolt apache::thrift::protocol::tnetworkbigendian="">, std::__1::allocator<:thrift::protocol::tbinaryprotocolt apache::thrift::protocol::tnetworkbigendian=""> > >::~__shared_ptr_emplace() in THeaderProtocol.cpp.o
      apache::thrift::protocol::TBinaryProtocolT<:thrift::transport::theadertransport apache::thrift::protocol::tnetworkbigendian="">::~TBinaryProtocolT() in THeaderProtocol.cpp.o

But when I -DBUILD_SHARED_LIBS=ON to -DBUILD_SHARED_LIBS=OFF it builds efficiently however it creates solely .a lib not .dylib that’s required for an additional lib

Full code is out there at DemoApp

Any assist or route can be appreciated

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles