首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CPP库编译为DLL,找不到stdlib

将CPP库编译为DLL,找不到stdlib
EN

Stack Overflow用户
提问于 2014-07-29 22:31:34
回答 1查看 304关注 0票数 0

一般来说,我正在尝试将CPP库编译到我自己的库中,作为Android的DLL (或者更准确地说,是.so文件)。当我的工具包(稍后将详细介绍)运行以下代码行时:

代码语言:javascript
复制
arm-linux-androideabi-g++ -Iinclude/common -Iinclude/android -std=gnu++11 --sysroot=c:\android\ndk/platforms/android-19/arch-arm -Ic:\android\ndk/sources/cxx-stl/gnu-libstdc++/4.6/include -Ic:\android\ndk/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/include -DHXCPP_VISIT_ALLOCS -DHXCPP_API_LEVEL=0 -IC:/HaxeToolkit/haxe/lib/hxcpp/3,1,39/include -Iinclude -fpic -fvisibility=hidden -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums "-D_LINUX_STDDEF_H " -Wno -psabi -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -fomit-frame-pointer -fexceptions -fno-strict-aliasing -finline-limit=10000 -DANDROID=ANDROID -Wa,--noexecstack -O2 -DNDEBUG -c -x c++ -frtti ./common/ExternalInterface.cpp -oobj/android-v7/802265c0_ExternalInterface.obj
arm-linux-androideabi-g++ -o../ndll/Android/libopenflgpg-v7.so -frtti -nostdlib -Wl,-shared,-Bsymbolic -Wl,--no-undefined -Wl,-z,noexecstack --sysroot=c:\android\ndk/platforms/android-19/arch-arm -Lc:\android\ndk/platforms/android-19/arch-arm/usr/lib @obj/android-v7/all_objs libs/android/libgpg-v7.a c:\android\ndk/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_static.a c:\android\ndk/platforms/android-19/arch-arm/usr/lib/crtbegin_so.o c:\android\ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.6/libgcc.a c:\android\ndk/platforms/android-19/arch-arm/usr/lib/libc.so c:\android\ndk/platforms/android-19/arch-arm/usr/lib/libm.so -llog -ldl

我得到了这个错误(甚至更多类似的错误):

代码语言:javascript
复制
gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: libs/android/libgpg-v7.a: in function gpg::OperationQueue::Impl::StartThreadIfNotRunningLocked():turn_based_match_impl.pb.cc(.text._ZN3gpg14OperationQueue4Impl29StartThreadIfNotRunningLockedEv+0x94): error: undefined reference to 'std::__1::thread::~thread()'

它似乎找不到std库;为什么不呢?我在Windows上,安装了Microsoft Visual Studio C++ 2010学习版,如果这有帮助的话。

更具体地说,我试图在Haxe中启用Google Play Games C++ SDK,方法是使用HXCPP编译一个NDLL,其中包含我可以在Haxe代码中使用Lib.load调用的所有函数。完整的项目是here

我尝试过包含typeinfo和其他十几个头文件,但都无济于事。我承认C++不是我的强项,所以我可能忽略了一些显而易见的东西。谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2016-02-05 06:10:17

将以下内容添加到您的Application.mk文件:

代码语言:javascript
复制
NDK_TOOLCHAIN_VERSION := clang
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25017919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档