当前位置: 首页 > news >正文

行业网站开发管理软件北京封闭最新消息

行业网站开发管理软件,北京封闭最新消息,表情包生成器在线制作,网站新闻中心模版一、下载源码 SDL官网 二、解压#xff0c;拷贝android项目#xff0c;并重新命名 2.1、解压 2.2#xff0c;重命名项目名称#xff08;androidSDL#xff09;AndroidSDL Github 三、导入头文件和源文件#xff0c;修改android.mk文件 3.1、在jni目录下创建SDL2文件…一、下载源码 SDL官网 二、解压拷贝android项目并重新命名 2.1、解压 2.2重命名项目名称androidSDLAndroidSDL Github 三、导入头文件和源文件修改android.mk文件 3.1、在jni目录下创建SDL2文件夹并拷贝相关头文件和源文件到该目录下 3.2、在jni/src目录下创建.cpp文件 main.cpp #include SDL.h int main(int,char**){return 0; }3.3、修改jni/src下的android.mk文件 Android.mk LOCAL_PATH : $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE : mainSDL_PATH : ../SDL2LOCAL_C_INCLUDES : $(LOCAL_PATH)/$(SDL_PATH)/include# Add your application source files here... LOCAL_SRC_FILES : main.cppLOCAL_SHARED_LIBRARIES : SDL2LOCAL_LDLIBS : -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroidinclude $(BUILD_SHARED_LIBRARY)四、使用NDK编译 4.1、环境变量path配置ndk路径 4.2、打开cmd命令窗口进入到androidSDL/app/jni/目录然后执行ndk-build命令进行编译 4.3、根目录下生成libs目录里面会有对应的so库 五、依赖so库 5.1、创建新项目AndroidSDLThreadGithub 5.2、src/main创建jniLibs目录拷贝so库 5.3、src/main/cpp下创建include文件夹拷贝SDL头文件至此 5.4、CMakeList.txt文件下配置SDL头文件和库文件 cmake_minimum_required(VERSION 3.18.1) project(androidsdlthread)#SDL统一路径 set(sdl_path ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}) #添加SDL头文件 include_directories(${CMAKE_SOURCE_DIR}/include/SDL) #添加SDL库 add_library(sdl SHARED IMPORTED) set_target_properties(sdl PROPERTIES IMPORTED_LOCATION ${sdl_path}/libSDL2.so)add_library(sdl_shared SHARED IMPORTED) set_target_properties(sdl_shared PROPERTIES IMPORTED_LOCATION ${sdl_path}/libc_shared.so)add_library(sdl_main SHARED IMPORTED) set_target_properties(sdl_main PROPERTIES IMPORTED_LOCATION ${sdl_path}/libmain.so)add_library(androidsdlthreadSHAREDnative-lib.cpp${CMAKE_SOURCE_DIR}/logger.h) find_library(log-liblog) target_link_libraries( # Specifies the target library.androidsdlthreadsdlsdl_sharedsdl_main-landroid${log-lib})六、使用SDL信号量实现等待通知机制 SDLSimple DirectMedia Layer库提供了信号量semaphore的支持用于实现线程间的同步和通信。信号量是一种计数器用于控制对共享资源的访问可以实现多线程之间的同步和互斥确保线程安全和资源的正确访问。 创建信号量调用SDL_CreateSemaphore() 函数创建一个信号量对象。在底层SDL库会调用操作系统提供的原生信号量创建函数如sem_init()Linux或CreateSemaphore()Windows。等待信号量调用SDL_SemWait() 或类似的函数等待信号量。在底层SDL库会调用操作系统提供的原生信号量等待函数如sem_wait()Linux或WaitForSingleObject()Windows。如果信号量的计数值大于0则将计数值减1线程可以继续执行。如果计数值为0则线程会被阻塞直到有其他线程调用SDL_SemPost()增加了信号量的计数值。发送通知调用SDL_SemPost() 函数增加信号量的计数值。在底层SDL库会调用操作系统提供的原生信号量增加函数如sem_post()Linux或ReleaseSemaphore()Windows。增加计数值后如果有线程正在等待该信号量其中一个线程将被唤醒可以继续执行。销毁信号量调用SDL_DestroySemaphore() 函数销毁信号量对象。在底层SDL库会调用操作系统提供的原生信号量销毁函数如sem_destroy()Linux或CloseHandle()Windows。 6.1、声明native方法 public native void startSDLThread();public native void postSDL();public native void releaseSDL();6.2、生成jni函数 #include jni.h #include stringextern C { #include SDL_thread.h #include logger.hSDL_sem *g_sem NULL; int g_task_exit 0; int task1(void *data); int task2(void *data); int number0;JNIEXPORT void JNICALL Java_com_anniljing_androidsdlthread_MainActivity_startSDLThread(JNIEnv *env, jobject thiz) {g_task_exit0;g_sem SDL_CreateSemaphore(0);SDL_CreateThread(task1, task1, NULL);SDL_CreateThread(task2, task2, NULL); } JNIEXPORT void JNICALL Java_com_anniljing_androidsdlthread_MainActivity_postSDL(JNIEnv *env, jobject thiz) {if (g_sem) {SDL_SemPost(g_sem);} }JNIEXPORT void JNICALL Java_com_anniljing_androidsdlthread_MainActivity_releaseSDL(JNIEnv *env, jobject thiz) {g_task_exit 1;SDL_DestroySemaphore(g_sem);g_sem NULL; } int task1(void *data) {while (!g_task_exit) {if (g_sem) {LOGD(task1 SemWait);SDL_SemWait(g_sem);number;LOGD(task1 number:%d\n,number);}}return 0; } int task2(void *data) {while (!g_task_exit) {if (g_sem) {LOGD(task2 SemWait);SDL_SemWait(g_sem);number;LOGD(task2 number:%d\n,number);}}return 0; } } 6.3、编译运行 我们需要把这个文件夹拷贝到自己的项目 启动了两个线程虽然线程2被唤起的次数多一些但是当线程1执行的时候变量number也是同步的
http://www.zqtcl.cn/news/580585/

相关文章:

  • 智能建站cms管理系统修改wordpress时区
  • 站长怎么添加网站内容重庆网站推
  • 东莞网站建设属于什么专业网页设计代码书
  • 网站后台代码在哪修改wordpress添加搜索小工具
  • 爱站站长工具中国建设监理协会官方网站
  • 珠海微信网站开发东莞网站制作方案定制
  • 大学网站建设说明书记的网站域名
  • 网站如何开通支付功能第一ppt课件免费下载官网
  • 做1元夺宝网站挣钱吗美工网站设计收费
  • 华侨城网站开发wordpress页码颜色
  • 上海建站网络公司制作文字图片
  • 平台型网站制作网站建设张世勇
  • 网站建设云南网页游戏大厅都有哪些
  • 网站建设与管理报告书郑州建设银行网站
  • 做网站网页的人是不是思维公司网站建设包括
  • 网站建设都包括哪些网站后台如何上传文件
  • 网站便民服务平台怎么做迁安做网站中的cms开发
  • 做外贸比较好的网站怎么把网站做的好看
  • 有没有在淘宝找人做网站被骗过的台州市环保局网站开发区
  • 公司外文网站制作河南住房和城乡建设厅网站
  • 东莞做网站公司有哪些代码网站推荐
  • 棋类游戏网站开发网站首页顶部图片尺寸
  • 工信部如何查网站备案大连网络推广广告代理
  • 网站建设基本流程心得wordpress首页截断
  • 网站包括哪些内容网站开发的相关技能
  • 百度竞价 百度流量 网站权重qq推广
  • 重庆网站建设总结WordPress简单百度站长插件
  • pc网站转换成微网站工作室推广网站
  • 嘉兴优化网站公司做水果生意去哪个网站
  • 青岛知名网站建设公司排名wordpress商场插件