2013-07-30 68 views
-2

我想爲C++類創建一個.so文件。我創建了一個名爲Hello.h和Hello.cpp的.h文件和.cpp文件。我在終端使用寫命令來創建.so文件,但我得到了以下錯誤:如何使用GCC創建.so文件

Hello.cpp:2:17: error: jni.h: No such file or directory
Hello.h:15: error: ‘JNIEXPORT’ does not name a type
Hello.cpp:12: error: ‘jstring’ does not name a type

我想問一下如何創建使用正確的命令代碼.so文件。

我的命令代碼,像波紋管:

g++ Hello.cpp -o Hello.o 
+1

http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html –

+1

這可能可以通過閱讀gnu c/C++編譯器的相應文檔來解決。 – franklin

+0

缺少一些'g ++'的'-I'參數(以告知JNI包含目錄的位置)。你還應該把'-Wall'傳遞給'g ++'(獲得所有警告) –

回答

2

嘗試:

g++ -fpic -m32 -c Hello.cpp 
g++ -m32 -shared Hello.o 

-m32標誌是64位系統上的32位版本。但我認爲你的問題可能與你的JNI創建的頭文件有關。

+0

謝謝。但是我試過這個命令,它仍然會得到同樣的錯誤。 – tontontv

+1

看起來你正在試圖用JNI構建一些東西。你是如何去做這件事的?您是否先用java構建接口,然後使用JNI爲您的cpp項目創建標題?您必須通過使用-I編譯器標誌傳入目錄來指定jni.h頭文件的位置。您還必須將jni生成的頭文件包含在cpp項目中。 –