2011-03-02 74 views
7

目前我正在使用Android NDK和JNI。我正在嘗試使用NDK構建C++代碼。在Android中使用C++構建NDK的問題

,但我得到了以下錯誤:

E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:10:19: error: fstream: No such file or directory 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:20: error: 'ifstream' does not name a type 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:21: error: 'ofstream' does not name a type 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:22: error: 'ofstream' does not name a type 
E:/Android/Tranining_workspace/BackUpMigrant/jni/ReadBackupArc5/ReadBackupArc5.cpp:34: error: 'string' was not declared in this scope     

任何人都可以請幫我嗎?

回答

11

我正好遇到了同樣的問題。似乎默認情況下,STL不會自動包含在NDK項目中。這也意味着iostream,fstream,string等不能馬上使用。要啓用它們,您需要修改Application.mk文件。如果您沒有(位於<project>/jni目錄中),那麼只需創建一個新的空白文件。添加行:

APP_STL := stlport_static

此外,還要記得包括using namespace std;或同等學歷,與通常#include <iostream>

+0

stl我得到「錯誤:fstream:沒有這樣的文件或目錄」 你對此有其他建議嗎? – CoDe 2012-01-23 07:43:20

+0

你可以粘貼包含'#include'行嗎? 'fstream'對我來說。另外,你有哪些版本的SDK和JNI?最新的SDK通常不會更新編譯。也可以嘗試刪除項目的'bin'目錄中的所有內容並重新編譯。 – Warpspace 2012-01-27 09:29:35

+0

我得到了這個問題的解決方案..這是因爲Android不支持STL lib ..爲了支持你只需要一個包含「APP_STL:= stlport_static」的Application.mk文件就可以了......就是這樣。 – CoDe 2012-02-04 10:42:22

0

你記得你:

#include <iostream> 
using namespace std; 

定義在文件的頂部?

(「使用命名空間std」並不總是一個好主意,但是這是一個單獨的問題。)

+0

仍是不工作一起。我認爲ndk找不到iostream文件。該文件位於android NDK文件夾的gnu-libstdC++目錄中。我不知道如何使用libstdC++連接C++ – Debabrata 2011-03-02 07:51:29