2011-09-22 405 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");