android ndk нативный код fopen () путь - PullRequest
1 голос
/ 22 сентября 2011

Я новичок в программировании и пытаюсь изучать Android с родным кодом C ++.Я пытаюсь открыть файл растрового изображения в нативном коде, чтобы я мог загрузить его в качестве текстуры в 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 как ноль.

Куда поместитьмой файл banana.bmp?

Сейчас я помещаю его в папку jni вместе с исходными файлами android.mk и c ++.

Может кто-нибудь объяснить мне?Спасибо

Ответы [ 4 ]

1 голос
/ 10 декабря 2013

Вы должны указать папку, в которую нужно записать файл "banana.bmp". Как в этом примере:

fp = fopen("/sdcard/banana.bmp", "wb");
1 голос
/ 22 ноября 2011

NDK fopen () откроет ресурсы в эмуляторе или на телефоне, а не в рабочей области разработки!

Чтобы попробовать это, например, в эмуляторе, вам нужно перенести изображение на SD-карту.

0 голосов
/ 23 сентября 2011

Вы не указываете путь к banana.bmp. Где вы ожидаете найти его? Если он находится в активе вашего APK, вы не можете просто fopen () как таковой. Если вы извлекли / скачали / и т.д. Вам понадобится путь, похожий на /data/data/your.package.name/banana.bmp (обратите внимание, что вам нужно получить фактический путь из Java / SDK)

0 голосов
/ 22 сентября 2011

Я думаю, вам нужно указать путь к вашему файлу.Чтобы помочь вам, я нашел эту ссылку , чтобы объяснить, но где именно находится ваш файл .bmp, я не уверен.Возможно, вам придется немного поэкспериментировать с расположением файлов.

...