在其他資料上增加了過程中遇到的問題。
so檔案為動態鏈結庫檔案,與windows下的dll檔案相當,linux下系統so檔案一般儲存在/usr/lib中。
下面就說明一下如何生成c++程式的so檔案,以及如何在c++程式中呼叫該so檔案
**********test.h**********=
#ifdef __cplusplus //
extern "c"
;int hellot(int j);
#ifdef __cplusplus
}#endif
**********test.cpp**********=
#include"test.h"
#include
using namespace std;
int test::hello(int i)
編譯test.cpp檔案
g++ -shared -fpic -lm -ldl -o libtest.so test.cpp
其中,so檔名必須以lib開頭。編譯具體指令請參考幫助文件
編譯除錯test.cpp檔案
gcc -ggdb3 -wall -shared -fpic -o libtest.so test.cpp
**********main.cpp**********=
#include
#include
#include
#include
using namespace std;
/*需要用到的函式
dlopen()
dlerror()
dlsym()
dlclose()
都儲存在標頭檔案dlfcn.h中
*/int main()
in#include
#include
#include "filter.h"
int main() ;
int *buf =(int*) malloc(20*4);
int **data = &buf;
int ecg_filter_v5[10]=,ecg_filter_v1[10]=;
int fs = 128;
printf("11111\n");
// int **datatemp = (int**)data;
int result = 0;
printf("start filter\n");
result = filter(data, lengthdata, ecg_filter_v5, ecg_filter_v1, fs);
if (result != 1)
else
return 0;
}編譯main.cpp檔案
g++ main.cpp -ldl -o main
編譯除錯main.cpp檔案
gcc -ggdb3 -wall -o test main.c -llib -lfilter
執行./main
除錯 main
gdb -q test
單步執行 s
run
只使用NDK將C C 編譯成SO
在自帶的ndk裡面有個ndk helper目錄,除了android.mk檔案,還有一些示例。我這裡只取三個檔案作修改後即可用。在ndk bundle下新建乙個名為jni的目錄,將上面的這些檔案都複製乙份到裡面。這是因為從ndk r4開始,只需將檔案放在jni下即可執行。為了能編譯通過,先將複製過來的...
Python 將py檔案編譯成so檔案
1.安裝cython,以及gcc編譯環境 root localhost pip install cython 2.編寫測試指令碼 test.py def test print hello python def add a,b print a b return a b 1.編寫setup.py檔案,與...
c 下將 cs檔案編譯成dll
呼叫方法 開始 所有程式 microsoft visual studio 2005 visual studio tools visual studio 2005 命令提示 開啟後,輸入csc 檢視編譯選項 注意 要將命名空間也寫進csc裡qnrujym啊 out 輸出檔名 預設值 包含主類的檔案或第...