我是编程并尝试使用本机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文件夹中。
有人可以向我解释一下吗?感谢
答案 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获取实际路径)