Thanks Jeff, that indeed solved the problem. regards, Rajiv
On Friday, February 20, 2015 at 4:57:24 AM UTC+5:30, Jeffrey Walton wrote: > > >> Please provide the Xcode setting you are using under C++ Standard > Library (CLANG_CXX_LIBRARY). > > libstdc++ > > >> nm -g /usr/local/lib/libcryptopp.a | c++filt | grep > RandomPool::GenerateIntoBufferedTransformation | grep " T " > > 0000000000000310 T > CryptoPP::RandomPool::GenerateIntoBufferedTransformation(CryptoPP::BufferedTransformation&, > > std::__1::basic_string<char, std::__1::char_traits<char>, > std::__1::allocator<char> > const&, unsigned long long) > > There's your problem :( > > Xcode is using GNU's libstdc++. Your libcryptoppa. is using LLVM's libc++. > > You can tell because LLVM decorates their symbols with the "__1". I don't > know anything else about it "__1". It may be an actual namespace, or it > may be a pseudo-namespace. > > Jeff > > On Thursday, February 19, 2015 at 4:22:47 PM UTC-5, Rajiv Poplai wrote: > >> >> On Friday, February 20, 2015 at 2:08:42 AM UTC+5:30, Jeffrey Walton wrote: >>> >>> >>> >>> On Thursday, February 19, 2015 at 8:11:34 AM UTC-5, Rajiv Poplai wrote: >>>> >>>> Thanks Jeff, I followed the steps detailed but it is showing one symbol >>>> as not found. >>>> >>>> CryptoPP::RandomPool::GenerateIntoBufferedTransformation(CryptoPP::BufferedTransformation >>>> >>>> &, std::string const&, unsigned long long) >>>> referenced from Vtable for CryptoPP::AutoSeededRandomPool >>>> >>>> This is caused by following statement in code >>>> CryptoPP::AutoSeededRandomPool rnd; >>>> >>>> In the randpool.cpp GenerateIntoBufferedTransformation has the last >>>> parameter defined as lword and not unsigned long long. >>>> Not able to figure out how to rectify this problem >>>> >>> This is just a typedef from config.h: >>> >>> #if defined(_MSC_VER) || defined(__BORLANDC__) >>> typedef unsigned __int64 word64; >>> #define W64LIT(x) x##ui64 >>> #else >>> typedef unsigned long long word64; >>> #define W64LIT(x) x##ULL >>> #endif >>> >>> // define large word type, used for file offsets and such >>> typedef word64 lword; >>> const lword LWORD_MAX = W64LIT(0xffffffffffffffff); >>> >>> Please provide the Xcode setting you are using under C++ Standard >>> Library (CLANG_CXX_LIBRARY). >>> >> libstdc++ >> >>> >>> [~/Documents/ccryptopp]$ lipo -info libcryptopp.a >>> >>> input file libcryptopp.a is not a fat file >>> >>> Non-fat file: libcryptopp.a is architecture: x86_64 >>> >> >> >>> Please provide the output of the following command: >>> >> >>> nm -g /usr/local/lib/libcryptopp.a | c++filt | grep >>> RandomPool::GenerateIntoBufferedTransformation | grep " T " >>> >> 0000000000000310 T >> CryptoPP::RandomPool::GenerateIntoBufferedTransformation(CryptoPP::BufferedTransformation&, >> >> std::__1::basic_string<char, std::__1::char_traits<char>, >> std::__1::allocator<char> > const&, unsigned long long) >> >> 0000000000002d78 S >> CryptoPP::RandomPool::GenerateIntoBufferedTransformation(CryptoPP::BufferedTransformation&, >> >> std::__1::basic_string<char, std::__1::char_traits<char>, >> std::__1::allocator<char> > const&, unsigned long long) (.eh) >> >> >> Please provide the link command you are using (produced by Xcode). >>> >> Ld >>> /Users/rapoplai/git/gocartclient/public/gcclient/libraries/macintosh/universal/debug/GCClient.app/Contents/MacOS/GCClient >>> >>> normal x86_64 >>> >>> cd /Users/rapoplai/git/gocartclient/build/gcclient/xcode >>> >>> export MACOSX_DEPLOYMENT_TARGET=10.7 >>> >>> /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.9.sdk >>> >>> -L/Users/rapoplai/git/gocartclient/public/gcclient/libraries/macintosh/universal/debug >>> >>> -L/Users/rapoplai/git/gocartclient/build/gcclient/xcode/../../../public/services/libraries/macintosh/universal/debug >>> >>> -L/Users/rapoplai/git/gocart/sources/client/public/services/libraries/macintosh/universal/Debug >>> >>> -L/Users/rapoplai/git/gocart/sources/client/public/services/libraries/macintosh/universal/Release >>> >>> -L/Users/rapoplai/git/gocartclient/external/caps/libraries/macintosh/universal/debug >>> >>> -L/Users/rapoplai/git/gocartclient/build/adobe_ialclient/xcode/../../../external/CCryptoPP/5.6.2/lib/mac/10.9 >>> >>> -L/Users/rapoplai/git/gocartclient/external/CCryptoPP/5.6.2/lib/mac/10.9 >>> -L/Users/rapoplai/git/gocartclient/build/adobe_ialclient/xcode >>> -F/Users/rapoplai/git/gocartclient/public/gcclient/libraries/macintosh/universal/debug >>> >>> -filelist >>> /Users/rapoplai/git/gocartclient/obj/gcclient.build/debug/GCClient.build/Objects-normal/x86_64/GCClient.LinkFileList >>> >>> -mmacosx-version-min=10.7 -no_dead_strip_inits_and_terms -Wl -pie >>> -stdlib=libstdc++ -fobjc-link-runtime -lcrypto >>> /Users/rapoplai/git/gocartclient/public/adobe_ialclient/libraries/macintosh/universal/debug/adobe_ialclient.a >>> >>> /Users/rapoplai/git/gocartclient/public/DispatchClient/libraries/macintosh/universal/debug/libdispatchclient.a >>> >>> -lribscaps -lcryptopp >>> /Users/rapoplai/git/gocartclient/public/services/libraries/macintosh/universal/debug/libAMTServiceLoader.a >>> >>> -lsqlite3 -lc++.1 -framework SystemConfiguration -framework Cocoa -Xlinker >>> -dependency_info -Xlinker >>> /Users/rapoplai/git/gocartclient/obj/gcclient.build/debug/GCClient.build/Objects-normal/x86_64/GCClient_dependency_info.dat >>> >>> -o >>> /Users/rapoplai/git/gocartclient/public/gcclient/libraries/macintosh/universal/debug/GCClient.app/Contents/MacOS/GCClient >>> >> >> >>> >>> On Thursday, February 19, 2015 at 3:38:07 AM UTC+5:30, Jeffrey Walton >>> wrote: >>> >>>> >>>>> >>>>> On Wednesday, February 18, 2015 at 1:31:07 PM UTC-5, Rajiv Poplai >>>>> wrote: >>>>>> >>>>>> I created libcrypto.a of CCryptopp 5.6.1 on Mac OS 10.9 using >>>>>> GNUmakefile. >>>>>> Subsequently when I link it in my project in XCode 5.1.1, I get the >>>>>> following linker error. >>>>>> >>>>>> CryptoPP:RandomPool::GenerateIntoBufferedTransformation symbol not >>>>>> found. >>>>>> >>>>>> Can anybody help me with this issue. >>>>>> >>>>> Xcode uses LLVM's libc++ by default. By default, Crpyto++'s >>>>> GNUmakefile omits CXXFLAGS += -std=libc++, so it uses GNU's libstdc++. >>>>> The >>>>> following is from around line 90: >>>>> >>>>> ifeq ($(UNAME),Darwin) >>>>> AR = libtool >>>>> ARFLAGS = -static -o >>>>> CXX = c++ >>>>> IS_GCC2 = $(shell $(CXX) -v 2>&1 | $(EGREP) -c gcc-932) >>>>> ifeq ($(IS_GCC2),1) >>>>> CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables >>>>> LDLIBS += -lstdc++ >>>>> LDFLAGS += -flat_namespace -undefined suppress -m >>>>> endif >>>>> endif >>>>> >>>>> So you will either need to: >>>>> >>>>> (1) Change Xcode to use GNU's libstdc++ >>>>> (2) Rebuild Crypto++ to use LLVM's libc++ >>>>> >>>>> To perform (1), change the setting in the Target's build settings. >>>>> >>>>> To perform (2), open the GNUmakefile and add CXXFLAGS += -std=libc++ >>>>> after one of he Darwin tests (search for Darwin). And get rid of the line: >>>>> >>>>> LDLIBS += -lstdc++ >>>>> >>>> -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
