安卓庫函數編譯安裝
❶ 在linux操作系統上封裝的.so庫能在安卓上直接使用庫里的函數么
linux下的.so文件為共享庫,相當於windows下的dll文件,使用方法如下:
在你的工程源代碼里包含.h頭文件,然後可以調用動態庫里的函數,在鏈接的時候加上如下編譯器參數:
-l xx.so
如果你的so文件是以lib開頭的,還可以直接這樣使用:
-lxx
xx是你的.so文件名
其實使用方法和你使用數學庫函數是一樣的,源代碼中添加
#include ,編譯的時候,加上-lm參數。
❷ 請問 android中 是否可以 調用C++編寫並封裝的動態鏈接庫文件(DLL)該怎麼實現
dll 是 Windows 平台的動態庫,而 so 是 Linux 平台的。即使你用別的編譯器如 gcc 把 VC 開發的動態庫能編譯為 so 也能被 Android 調用,但歸根結底這個 so 還是要調用 Windows API,這根本就是不可能生效。要 Android 能調用,那麼就必須要用標准 C 以及 Android 提供的系統 API 函數在 Linux 上編譯。在 Windows 平台,你可以試試安裝 MinGW,使用其 gcc 編譯器來編譯 so 庫。就是不知道是否可以設置 CPU 指令集,如果不能設置 ARM 那麼編譯了沒法用。
❸ 手機能否裝c語言編譯器
可以裝,不過需要安卓手機。
安裝步驟如下:
1、我們打開谷歌應用商店。在搜索框里輸入mobile c查找應用程序。下載並安裝好
6、可以看到這里正確的輸出了Hello World字元串。
❹ 有沒有能安在手機上的c語言編譯器,而且要能用,要有函數庫。 還有autocad有木有手機版的
首先,手機上的編譯器app沒什麼意義,沒人會在手機上編程,做這樣子的編譯器是沒有市場的,所以推斷沒有,然後,autocad貌似有一個ipad版本的,而且這類軟體對硬體性能的要求也是比較高的,而且手機的屏幕那麼小,別說畫了,看著都費勁,所以還是推斷不會有,不過如果哪天android上出現一個的話估計有可能可以,但是實在是沒有意義……而且就算有也不會有人用的
❺ jni層是否能調用android的庫函數
步驟一:
在java中定義一個c方法的介面 ,相當於在java代碼中定義了一個介面 介面的實現方法是C語言實現的。
public native String hello();
步驟二:
實現C代碼
方法名 嚴格按照jni的規范
#include <stdio.h>
#include <jni.h>
jstring Java_com_yys_helloworldformc_MainActivity_hello(JNIEnv* env,jobject obj){
// 2 步 實現C代碼
// 返回一個java String 類型的字元串
//jstring (*NewStringUTF)(JNIEnv*, const char*);
//(*env) 相當於 JNINativeInterface* JNIEnv
//*(*env) 相當於 JNINativeInterface
///return (**env).NewStringUTF(env,"helloworldfromc");
return (*env)->NewStringUTF(env,"helloworldfromc");
}
步驟三:
創建android.mk 告訴編譯器 如何把c代碼打包成函數庫
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 對應打包成函數庫的名字
LOCAL_MODULE := hello
# 對應c代碼的文件
LOCAL_SRC_FILES := Hello.c
include $(BUILD_SHARED_LIBRARY)
步驟四:
把c代碼 打包成函數庫 用到了安裝的環境 到相應目錄下使用ndk-build打包
步驟五:
在java代碼中 引入庫函數
static{
System.loadLibrary("hello");// 注意事項 去掉前面的lib 後面的.so
}
❻ 如何定製android源碼的編譯選項 後期安裝
Android編譯過程比較長,配置起來也很麻煩。現僅就工作遇到的問題做個總結。所用硬體平台為amlogic stvm3。---------------------------------------------------------------------------關於版本號:文件build/core/version_defaults.mk用來檢查一些跟版本相關的變數是否定義;如果未定義,則使用默認值。這些變數包括 PLATFORM_VERSION # 如 2.2.5 PLATFORM_SDK_VERSION # 8, 對應2.2.5 PLATFORM_VERSION_CODENAME # REL,即發行版 DEFAULT_APP_TARGET_SDK # 同SDK_VERSION或VERSION_CODENAME BUILD_ID # 默認為UNKNOWN BUILD_NUMBER # 默認eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 version_defaults.mk首先包含進build_id.mk。用戶應當配置build_id.mk,而不應該改動version_defaults.mk文件。然後檢查上述變數,如未定義則賦值默認值。---------------------------------------------------------------------------關於調試功能(adb)的開啟編譯android源碼之前總是要先運行build/envsetup.sh,以初始化一些常用命令(實際上是bash的函數,如add_lunch_combo)。其中也從以下文件中引入了一些編譯設置: device/${CHIPSET_VENDOR}/vendorsetup.sh我們這里使用的CHIPSET_VENDOR為amlogic。比如我們有文件device/amlogic/vendorsetup.sh,內容為"產品名-編譯類型(flavor)"列表(稱為combo),如下: add_lunch_combo m1ref-eng add_lunch_combo m1ref-user add_lunch_combo m2ref-eng add_lunch_combo m2ref-user add_lunch_combo stvm3-eng add_lunch_combo stvm3-user其中,m1ref和stvm3是產品名(作前綴),後面為編譯類型。除此前綴外可選的combo值有: eng, user, userdebug, tests。(參考文件build/core/main.mk中對於變數TARGET_BUILD_VARIANT的篩查條件)我們可以修改vendorsetup.sh文件,來改變為特定設備編譯的結果。以下是各個編譯類型的特點: eng: 工程模式,用於平台級的調試,是默認的編譯類型。 待安裝的模塊tag有: eng, debug, user, development. 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性: ro.secure=0, ro.deuggable=1, ro.kernel.android.checkjni=1 adbd默認開啟,adb以root身份運行。 user: 即最終用戶版; 待安裝的應用tag有: user 安裝不帶tag的非APK模塊; 所安裝應用由產品定義文件給出; 默認屬性有ro.secure=1, ro.debuggable=0; 默認關閉adbd服務(但可通過應用settings來打開,且adb以shell身份運行); userdebug: 與user類似,除了: 支持有限的調試功能; 待安裝的應用tag有:debug;
❼ 安卓上下載了個python,怎麼安裝相應的庫
Python是動態語言,比較簡潔。Android不直接支持使用python開發應用,需要使用其它中間件或者庫。PythonForAndroid提供了在android平台上對python語言的支持;CLE支持python和java之間的交互,同時提供了一個通用的介面,可用於其它多種語言。
Wrapandroid project將android類封裝為CLE對象,從而可以使多種語言可以調用android類。使用這三個組件,可以在android平台上直接使用python開發界面應用程序。Wrapandroid項目在進行中,目前的0.8.5版本已經提供了除SQlite,OpenGL之外大部分android類的封裝。完全可以編寫一個獨立的python應用程序。
在android上開發python應用程序,編程和打包環境可以直接使用eclipse。
❽ NDK編譯時,報錯error: undefined reference to 'rand',是不是安卓庫函數裡面沒有這個函數的實現呢
把proj.android文件夾下的obj文件夾刪除,重新編譯試試
❾ 安卓工程怎麼利用第三方庫,就是自己用C++編寫的編碼解碼程序,對圖片進行編碼解碼
你可以嘗試將構造函數和析構函數一起導出,並且,將編譯DLL文件時生成的LIB文件添加到調用DLL的項目中.
如果還不行,請將定義DLL的頭文件貼出來分析.
------------------------------------------------------------------
補充:
MFC擴展DLL只能由MFC的應用程序調用,請問你調用DLL的程序是什麼類型?