1. 程式人生 > >[android]std::map 連結器錯誤 ndk r8c 與 APP_STL: = gnustl_static

[android]std::map 連結器錯誤 ndk r8c 與 APP_STL: = gnustl_static

我有一些問題連結 STL 的故鄉 application 。連線失敗時的 map::insert 與 map::operator [] 成功與其他對映函式。我 Application.mk 是:

APP_STL := gnustl_static
APP_CPPFLAGS
:=-fexceptions -frtti
APP_CPPFLAGS
+=-g3
APP_CPPFLAGS
+=-DDEBUG
APP_ABI
:= armeabi-v7a
APP_PLATFORM
:=android-14
NDK_TOOLCHAIN_VERSION
:=4.6

本機程式碼包含兩個資料夾級別。對於每個內部的資料夾,我建立了一個 Android.mk 檔案來編譯和生成的靜態庫。我使用 std::map 在最深的資料夾中。Android.mk 看起來像:

TEMP_PATH_REG := $(call my-dir)
LOCAL_PATH
:= $(TEMP_PATH_REG)
include $
(call all-subdir-makefiles)
LOCAL_PATH
:= $(TEMP_PATH_REG)
include $
(CLEAR_VARS)

LOCAL_MODULE            
:= registration
LOCAL_C_INCLUDES    
:= $(LOCAL_PATH)/../glm/
LOCAL_SRC_FILES        
:= registration_factory.cpp \
                                          inertial
.cpp                                      
LOCAL_LDLIBS              
:=-llog -landroid -lEGL
LOCAL_STATIC_LIBRARIES    
:= android_native_app_glue
include $
(BUILD_STATIC_LIBRARY)
$
(call import-module,android/native_app_glue)

當我 build 專案得到了以下錯誤:

~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt
/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o):infunction std::_Rb_tree<int, std::pair<intconst, xmar::IRegistration*>, std::_Select1st<std::pair<intconst, xmar::IRegistration*>>, std::less<int>, std::allocator<std::pair<intconst, xmar::IRegistration*>>>::_M_insert_(std::_Rb_tree_node_base const*, std::_Rb_tree_node_base const*, std::pair<intconst, xmar::IRegistration*>const&):~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:1013: error:undefined reference to 'std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'StaticLibrary: libandroid_native_app_glue.a
rm
-f obj/local/armeabi-v7a/libandroid_native_app_glue.a
~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o):infunction std::_Rb_tree_const_iterator<std::pair<intconst, xmar::IRegistration*>>::operator--():~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:284: error:undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)'~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-ar crs ./obj/local/armeabi-v7a/libandroid_native_app_glue.a ./obj/local/armeabi-v7a/objs-debug/android_native_app_glue/android_native_app_glue.o
~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o):infunction std::_Rb_tree_const_iterator<std::pair<intconst, xmar::IRegistration*>>::operator++():~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:269: error:undefined reference to 'std::_Rb_tree_increment(std::_Rb_tree_node_base const*)'Prebuilt: libgnustl_static.a <=<NDK>/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o):infunction std::_Rb_tree_iterator<std::pair<intconst, xmar::IRegistration*>>::operator--():~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:203: error:undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'

我的很多伊格錯了嗎?

多謝。

相關推薦

[android]std::map 連結錯誤 ndk r8c APP_STL = gnustl_static

我有一些問題連結 STL 的故鄉 application 。連線失敗時的 map::insert 與 map::operator [] 成功與其他對映函式。我 Application.mk 是: APP_STL := gnustl_staticAPP_CPPFLAGS :=-fexceptions -f

關於Vs2015的連結錯誤的恢復

Link1168    錯誤提示  無法開啟進行寫入,說明當前有兩個控制檯並且已經 被修改過一次  ,需要關閉所有的控制檯進行重新除錯 在除錯程式時,出現了,關於連結器無法解析外部程式,即使

過載函式的呼叫不明確、連結錯誤問題解決

問題一:error C2668: “sqrt”: 對過載函式的呼叫不明確 原因分析:在較高版本的編輯器中,數學函式的引數檢查更為嚴格,由於變數或常量型別定義不明確常常會產生錯誤。(程式從vc6.0轉移到vs上執行) 解決方案:例如將sqrt(x)改成sqrt

關於std::map錯誤

想使用一個關聯容器來存放2d-3d點,最先想到的是: std::map<cv::Point, pcl::PointXYZ> map_2d_3d; 這樣很直觀,但是不行。 no match for ‘operator<’ (operand types are ‘const cv::Poi

VS連結工具錯誤 LNK2019無法解析的外部符號

常見的問題 以下是一些導致 LNK2019 的常見問題: 未連結的物件檔案或包含符號定義的庫。 在 Visual Studio 中,驗證包含定義原始碼檔案是生成,分別連結為專案的一部分。 在命

連結工具錯誤 LNK2026 XXX模組對於 SAFESEH 映像是不安全的

新浪部落格 http://service.weibo.com/staticjs/weiboshow.swf?verifier=a63d6d67&uid=1283818905&width=230&height=500&fansRow=2&a

連結工具錯誤 LNK2019 C++primer5第十五章程式錯誤的解決

編寫C++第十五章15.9 文字程式再探程式時 由於初寫C++程式造成許多錯誤 最初是出現LNK2005錯誤 由於重複定義標頭檔案產生,通過查詢在每個標頭檔案前鍵入條件預處理指令如下 #ifndef NOTQUERY //如果沒有定義這個巨集 #define NOTQUER

連結工具錯誤 LNK2019

錯誤訊息 在函式“function”中引用了無法解析的外部符號“symbol” 在 function 中找到了未定義的外部符號 (symbol)。若要解決此錯誤,請提供符號定義或移除引用它的程式碼。一般報錯如下: error LNK2001: unresolved ex

MSDN對連結工具錯誤 LNK2019的解釋

連結器無法找到函式“function”中使用的外部符號“symbol”的定義。 有許多問題可能會導致此錯誤。 本主題將幫助你確定原因並找到解決方案。 外部符號是你在原始碼中用於引用在另一物件或庫檔案中定義的內容的宣告名稱,例如,一個外部函式或全域性變數。 連結器負責解

連結工具錯誤 "LNK2026 XXX模組對於 SAFESEH 映像是不安全的" LINK : fatal error LNK1104: 無法開啟檔案“LIBCD.lib”

解決方法: 1.開啟該專案的“屬性頁”對話方塊。 2.單擊“連結器”資料夾。 3.單擊“命令列”屬性頁。 4.將/SAFESEH:NO 鍵入“附加選項”框中,然後點選應用。       出現這類問題一般是由於所執行的專案是VC6(或者vs2003)建立的,而後又用VS2005或者更高版本

連結工具錯誤 LNK2026 模組對於 SAFESEH 映像是不安全的

一、概述        今天用VS 2013開啟一個之前VS2010下的一個c/c++專案,生成的時候報錯:“LNK2026 模組對於 SAFESEH 映像是不安全的”。網上搜了一下,發現瞭解決方案:

C++編譯器連結工作原理 + Link錯誤

一.Debug版本和Release版本的區別 Debug通常稱為除錯版本,它包含除錯資訊,並且不作任何優化,便於程式設計師除錯程式。Release稱為釋出版本,它往往是進行了各種優化,使得程式在程式碼大小和執行速度上都是最優的,以便使用者很好地使用。 一般而言Deb

VS2012 連結工具錯誤 LNK2026

VS2012遇到一個問題:"連結器工具錯誤 LNK2026 XXX模組對於SAFESEH 映像是不安全的 解決方法: 1.開啟該專案的“屬性頁”對話方塊。 2.單擊“連結器”資料夾。 3.單擊“命令列”屬性頁。 4.將/SAFESEH:NO 鍵入“附加選項”框

Android流媒體開發之路三:基於NDK開發Android平臺RTSP播放

基於NDK開發Android平臺RTSP播放器 最近做了不少android端的開發,有推流、播放、直播、對講等各種應用,做了RTMP、RTSP、HTTP-FLV、自定義等各種協議,還是有不少收穫和心得的。我這邊做,核心模組和核心程式碼部分,都是基於NDK,用C++開發的,然後將so動態庫,在Android

at android.view.LayoutInflater.createViewFromTag的錯誤原因

檢查 mta string bject 報錯 except .com view com 創建對話框時出現下面的錯誤: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ‘

Android的日期選擇

pick mon 註意 cells cin 12月 判斷 void 選擇 TimePicker(時間選擇器) 方法 描述 Integer getCurrentHour () 返回當前設置的小時 Integer getCurrentMinute

IIS編輯錯誤信息CS0016解決方案

temp str pre 發布 clas 安全 自己 全選 選中 錯誤信息: 運行asp.net程序時候,編譯器錯誤消息: CS0016: 未能寫入輸出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary AS

MVC 分析器錯誤:“/”應用程序中的服務錯誤

height logs 程序 .cn mvc 技術 log bin 加載 運行一個MVC項目的時候一運行就報以下這個錯誤 解決方法: 可能是因為該項目引用的dll會被加載到該項目的bin\文件下, 而不是b

Android jni/ndk編程三native訪問java

efi pan exp exc save protect uil arm 註冊方法 一.訪問靜態字段 Java層的field和method,不管它是public,還是package、private和protected,從 JNI都可以訪問到,Java面向語言的封裝性不見了。

Android連接服務端的Socket

context cli new t nal .com connect net ica 主線程 package com.example.esp8266;import java.io.IOException;import java.io.InputStream;import j