android ndk本机代码fopen()路径

时间:2011-09-22 02:00:41

标签: android android-ndk fopen

我是编程并尝试使用本机c ++代码学习android的新手。 我试图在本机代码中打开一个位图文件,以便我可以在opengl中将其作为纹理加载。

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返回为null。

我应该把banana.bmp文件放在哪里?

现在我将它与android.mk和c ++源文件一起放在jni文件夹中。

有人可以向我解释一下吗?感谢

4 个答案:

答案 0 :(得分:1)

NDK fopen()将在模拟器或手机上打开资源,而不是在开发工作区中打开资源!

要尝试此操作,例如在模拟器中,您应该将图像推送到SD卡。

答案 1 :(得分:1)

您应该指定一个文件夹来写“banana.bmp”文件。 就像在这个例子中一样:

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

答案 2 :(得分:0)

我认为您需要指定文件的路径。为了帮助您,我找到了this link来解释,但确切地说.bmp文件所在的位置我不确定。您可能需要对文件位置进行一些实验。

答案 3 :(得分:0)

您没有指定banana.bmp的路径。您希望在哪里找到它?如果它在你的APK的资产中,你不能简单地fopen()这样。如果您已提取/下载/等。你需要一个类似于/data/data/your.package.name/banana.bmp的路径(请注意,你需要从Java / SDK获取实际路径)