将 CPP 库编译为 DLL,找不到 stdlib
Compiling a CPP library into a DLL, can't find stdlib
一般来说,我试图将CPP库编译到我自己的库中,作为Android的DLL(或者更准确地说,是.so
文件)。当我的工具包(稍后详细介绍)运行以下行时:
arm-linux-androideabi-g++ -Iinclude/common -Iinclude/android -std=gnu++11 --sysroot=c:androidndk/platforms/android-19/arch-arm -Ic:androidndk/sources/cxx-stl/gnu-libstdc++/4.6/include -Ic:androidndk/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:androidndk/platforms/android-19/arch-arm -Lc:androidndk/platforms/android-19/arch-arm/usr/lib @obj/android-v7/all_objs libs/android/libgpg-v7.a c:androidndk/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi/libgnustl_static.a c:androidndk/platforms/android-19/arch-arm/usr/lib/crtbegin_so.o c:androidndk/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/lib/gcc/arm-linux-androideabi/4.6/libgcc.a c:androidndk/platforms/android-19/arch-arm/usr/lib/libc.so c:androidndk/platforms/android-19/arch-arm/usr/lib/libm.so -llog -ldl
我得到了这个错误(和很多类似的错误):
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 Express,如果有帮助的话。
更具体地说,我试图在Haxe中启用Google Play Games c++ SDK,通过使用HXCPP编译具有所有功能的NDLL,我将能够在我的Haxe代码中使用Lib.load
调用。完整的项目在这里。
我试过包括typeinfo
和大约十二个其他标题,但无济于事。我承认c++不是我的强项,所以我可能忽略了一些非常明显的东西。谢谢你的帮助!
将此添加到应用程序中。可文件:
NDK_TOOLCHAIN_VERSION := clang
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Nemiver 找不到文件 /build/glibc-LK5gWL/glibc-2.23/stdlib/random.c
- 将 CPP 库编译为 DLL,找不到 stdlib
- clang++ 3.2链接器找不到c++ stdlib