网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月13日漏签0天
sdl吧 关注:4,212贴子:12,534
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 8回复贴,共1页
<<返回sdl吧
>0< 加载中...

【深坑】用VS2015编译调试SDL Android项目时遇到的问题与解决

  • 取消只看楼主
  • 收藏

  • 回复
  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
告别c4droid。


  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先简要介绍下正常的ndk脚本构建SDL的流程,
也即,不用VS的话正常情况下应该是这样的一个大致过程
配置好jdk, ant, ndk, sdk;
把SDL源代码中的目录结构布置好
修改android.mk把相应的代码文件写进去。
用cd命令将当前目录设定 到项目目录
ndk-build
这一步是编译源码,时间较长。
然后,打开虚拟设备或真实设备,无论是什么都启用usb调试
ant debug install
于是我们可以看到安装好了的SDL

adb logcat
这样我们就可以看到各种SDL_Log的输出。
在设备上点开它顺利的话就可以正常运行了。


2025-08-13 17:36:17
广告
不感兴趣
开通SVIP免广告
  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
jni目录:(可以不改)
Application.mk如下:
APP_ABI := all
Android.mk如下:(本就如此不需要改)
include $(call all-subdir-makefiles)
jni/SDL/目录下对于普通情况不需要改,
但对于用VS的话,需要改动一下,稍后再说。
jni/src/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
SDL_PATH := ../SDL 此处你可以写任何位置,只要那目录里有上面红勾的那3个就行了,一般不需要改
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include
# Add your application source files here...
LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \
YourSourceHere.c
把这里的YourSourceHere.c改成你所用的程序代码。
LOCAL_SHARED_LIBRARIES := SDL2
LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog
include $(BUILD_SHARED_LIBRARY)
然后后面就可以按部就班的构建完整个程序了,接下来我们才开始介绍VS相关的正文。


  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先到此,明天再补完


  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如此利用ndk预先编译出SDL库文件,我们写基于SDL的Android程序在vs上的编译方法基本与Windows平台下差不多了,
具体的编译参数此处不详述,
实质上就是照抄Android.mk里面的命令。
以后我再补张图吧。但,
必须指出vs工程中的链接属性必须要有-Wl,--undefined=Java_org_libsdl_app_SDLActivity_nativeInit
具体原因不详,不这样做的话即使成功编译安装到设备上也不能运行,会因为找不到Java_org_libsdl_app_SDLActivity_nativeInit而退出。
真正的麻烦在于SDL那一大批扩展库。也正因为这些库全都用到SDL,所以我们尽可能不把SDL编译成静态库。


  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先是sdlmixer没能成功,
说是找不到smpeg相关的定义。


  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是匪夷所思的,后来我发现主要原因其实很简单,Android.mk没有编译smpeg模块。因为隔开了一个目录它就找不到了。。


  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
解决办法应该是有很多的,我直接把external剪切到与sdlmixer同一级目录下,再往里面放个Android.mk把所有子目录都include掉,正如jni下那个Android.mk所做的那样
include $(call all-subdir-makefiles)于是就成功编译好了sdlmixer


2025-08-13 17:30:17
广告
不感兴趣
开通SVIP免广告
  • 铃铛兮
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先到此,以后再补完


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 8回复贴,共1页
<<返回sdl吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示