3

だから私は私のAndroid.mkに次のものを持っています....

...
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include /Users/myname/Development/Android/android-ndk-r8c/platforms/android-14/arch-arm/usr/include
...
LOCAL_LDLIBS := -ldl -lGLESv1_CM -llog

ただし、 ndk-build を実行しようとすると、次のようになります....

/Users/myname/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/.. /../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libSDL.a(SDL_render_gles.o): 関数内 GLES_CreateRenderer:jni/SDL/src/render/opengles /SDL_render_gles.c:189: エラー: 'glDisableClientState' への参照が未定義です collect2: ld が 1 つの終了ステータスを返しました

もちろん、これはリンクの問題のように見えますが、コンパイラは問題なく動作しました。リンクが機能しないのにコンパイルが機能する理由について混乱しています。どうすれば修正できるか知っていますか?

ndk-build V=1 から >Build.log出力

アップデート:

わかりましたので、ここで見つかったコードを取得します。これは正常にコンパイルされますが、PRBoom+ にアップグレードしようとしているので、ここからコードをダウンロードし、Android.mk を微調整して新しいクラスを含めます。これが完了すると、正常にコンパイルされるように見えますが、適切にリンクできません。私が見る2つの主なエラーがあります...

最初は複数の定義が関係していますが、元の (コンパイルされてリンクされた細かい) コードには同じ複数の定義がありました....

/Users/me/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/.. /../../../arm-linux-androideabi/bin/ld: エラー: ./obj/local/armeabi/objs-debug/prboom_jni/w_mmap.o: 'W_InitCache' の複数の定義

他のタイプはOpenGLの問題です...

/Users/me/Development/Android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/.. /../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libSDL.a(SDL_render_gles.o): 関数内 GLES_ResetState:/Users/jackiegleason/Development/Code/ prboom4android-base/jni/SDL/src/render/opengles/SDL_render_gles.c:181: エラー: 'glDisable' への未定義の参照

(prboom4android コードを使用して) すべてをコピーすると、すべてが正常にコンパイルおよびリンクされます。

これは、2 つの Android.mk ファイルの差分です...

< LOCAL_C_INCLUDES:= $(LOCAL_PATH) $(LOCAL_PATH)/include $(LOCAL_PATH)/../SDL_net/include $(LOCAL_PATH)/../SDL/include $(LOCAL_PATH)/MUSIC $(LOCAL_PATH)/MUSIC/include $(LOCAL_PATH)/TEXTSCREEN $(LOCAL_PATH)/TEXTSCREEN/include
---
> LOCAL_C_INCLUDES:= $(LOCAL_PATH) $(LOCAL_PATH)/include $(LOCAL_PATH)/../SDL_net/include $(LOCAL_PATH)/../SDL/include
28c28
<   f_finale.c p_enemy.c p_spec.c r_plane.c w_mmap.c i_capture.c \
---
>   f_finale.c p_enemy.c p_spec.c r_plane.c w_mmap.c \
31,36c31,33
<   m_bbox.c p_inter.c p_tick.c r_things.c z_zone.c s_advsound.c memio.c \
<   d_client.c i_video.c i_network.c i_system.c PCSOUND/pcsound.c PCSOUND/pcsound_sdl.c SDL/i_sshot.c \
<   i_main.c sc_man.c SDL/i_sound.c jni_doom.c mus2mid.c pcm2wav.c e6y.c SDL/i_joy.c \
<         r_screenmultiply.c hu_tracers.c i_smp.c g_overflow.c i_pcsound.c \
<         MUSIC/dbopl.c MUSIC/flplayer.c MUSIC/portmidiplayer.c MUSIC/midifile.c MUSIC/opl_queue.c MUSIC/vorbisplayer.c MUSIC/dumbplayer.c MUSIC/oplplayer.c MUSIC/madplayer.c MUSIC/opl.c \
<         TEXTSCREEN/txt_button.c TEXTSCREEN/txt_separator.c TEXTSCREEN/txt_gui.c TEXTSCREEN/txt_widget.c TEXTSCREEN/txt_checkbox.c TEXTSCREEN/txt_radiobutton.c TEXTSCREEN/txt_inputbox.c TEXTSCREEN/txt_spinctrl.c TEXTSCREEN/txt_window.c TEXTSCREEN/txt_desktop.c TEXTSCREEN/txt_scrollpane.c TEXTSCREEN/txt_io.c TEXTSCREEN/txt_strut.c TEXTSCREEN/txt_window_action.c TEXTSCREEN/txt_dropdown.c TEXTSCREEN/txt_sdl.c TEXTSCREEN/txt_label.c  TEXTSCREEN/txt_table.c 
---
>   m_bbox.c p_inter.c p_tick.c r_things.c z_zone.c \
>   d_client.c i_video.c i_network.c i_system.c \
>   i_main.c i_sound.c jni_doom.c mmus2mid.c pcm2wav.c
4

1 に答える 1