前一陣為android程式寫了一些c++生成的so檔案,但是單檔案沒法單步除錯,導致呼叫時出現問題後不好定位**,於是想到在c++程式的關鍵點打logi標記,剛開始遇到些問題,後來終於解決了,現在把解決方法記錄下來,方便自己,也方便別人。
首先,在c++或c的開始定義巨集,如下:
// 定義info資訊
#define logi(...) __android_log_print(android_log_info,tag,__va_args__)
// 定義debug資訊
#define logd(...) __android_log_print(android_log_debug, tag, __va_args__)
// 定義error資訊
#define loge(...) __android_log_print(android_log_error,tag,__va_args__)
然後,修改android.mk檔案,這個修改要注意下,是有順序要求的,這些語句順序變了,就不成功了,具體為什麼,這個沒有繼續研究。還有是否有其他的正確順序,也沒有多嘗試,下面列出的mk檔案,在我呼叫logi的時候是匹配的。如下:
local_path := $(call my-dir)
include $(clear_vars)
local_module := jni_jniclass
local_src_files := jni_jniclass.cpp
local_ldlibs := -lm -llog
local_shared_libraries := liblog libcutils
include $(build_shared_library)
如何利用C生成 so供Mono呼叫
mono誕生的初衷是為了吸引更多的windows net程式設計師來加入linux平台的開發。但在linux世界中c語言依然是主流。很多時候一些關鍵應用 比如大型笛卡兒乘積運算 需要呼叫平台硬體功能的時候 不得不依賴c來完成。這個時候 mono 多少顯得有些力不從心。當然可以使用dllimport特...
so動態鏈結庫生成 呼叫
linux下檔案的型別是不依賴於其字尾名的,但一般來講 o,是目標檔案,相當於windows中的.obj檔案 so 為共享庫,是shared object,用於動態連線的,和dll差不多 a為靜態庫,是好多個.o合在一起,用於靜態連線 1 動態庫的編譯 下面通過乙個例子來介紹如何生成乙個動態庫。這裡...
Linux C 簡單生成與呼叫so庫
參考資料 網上有很多c語言編譯so庫的方法,用c 的偏少,遇見了一些坑,這裡記錄一下,以作參照。先實現乙個最簡單的函式,libtest.cpp 先不考慮extern c 這句話 include extern c double ddd double a linux 命令 注意這裡生成動態庫檔案時要加上...