2011-09-22 410 views
1

我是新來的編程和嘗試學習與本機c + +代碼的android。 我想在本地代碼中打開一個位圖文件,所以我可以將它作爲一個紋理加載到opengl中。android ndk本地代碼fopen()路徑

FILE* img = NULL; 
img = fopen("banana.bmp","rb"); 

if (img == NULL) 
{ 
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", "load texture file = null"); 
    return -1; 
} 

上面的代碼總是返回img爲空。

我應該在哪裏放置我的banana.bmp文件?

現在我把它與android.mk和C++源文件放在jni文件夾中。

有人可以向我解釋一下嗎?謝謝

+0

順便說一下,字符串錯誤(錯誤)說,沒有這樣的文件或目錄,所以得有毛病的文件路徑,謝謝 – kevin0228ca

回答

0

我認爲你需要指定你的文件的路徑。爲了幫助你,我找到了this link來解釋,但確切地說.bmp文件所在的位置,我不確定。您可能需要做一些文件位置實驗。

0

您沒有指定banana.bmp的路徑。你期望它被發現在哪裏?如果它位於APK的資產中,則不能簡單地fopen()。如果你已經提取/下載/等。您需要一個類似/data/data/your.package.name/banana.bmp的路徑(注意,您需要從Java/SDK獲取實際路徑)

1

NDK fopen()將在模擬器或手機上打開資源,而不是在您的開發工作區中!

要嘗試此操作,例如在模擬器中,應將圖像推送到SD卡。

1

你應該指定一個文件夾在哪裏寫「banana.bmp」文件。 就像這個例子:

fp = fopen("/sdcard/banana.bmp", "wb");