小编Jos*_*ett的帖子

CMake无法静态链接SDL2

我正在尝试使用CMake和MSYS Makefiles构建一个简单的SDL2游戏.

我想静态链接SDL2,这样我就可以分发一个可执行文件,而不必包含SDL2.dll.

这是我的CMakeLists.txt档案:

project(racer-sdl)

cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_EXE_LINKER_FLAGS "-static")

include(FindPkgConfig)
pkg_search_module(SDL2 sdl2)
if (SDL2_FOUND)
  message(STATUS "Using SDL2")
  add_definitions(-DUSE_SDL2)
  include_directories(${SDL2_INCLUDE_DIRS})
  link_directories(${SDL2_LIBRARY_DIRS})
  link_libraries(${SDL2_LIBRARIES})
else ()
  message(FATAL_ERROR "Missing SDL2")
endif ()

file(GLOB SOURCE_FILES src/*.cpp src/*.hpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

我可以在没有-static链接器标志的情况下构建正常,但是使用它我得到了很长的未定义引用列表.

c:/SDL2-2.0.3/i686-w64-mingw32/lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:58: undefined reference to `_imp__timeBeginPeriod@4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to `_imp__timeEndPeriod@4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:58: undefined reference to `_imp__timeBeginPeriod@4'
c:/SDL2-2.0.3/i686-w64-mingw32/lib\libSDL2.a(SDL_systimer.o): In function `SDL_TicksInit':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:106: undefined reference to `_imp__timeGetTime@0'
c:/SDL2-2.0.3/i686-w64-mingw32/lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to …
Run Code Online (Sandbox Code Playgroud)

cmake msys static-linking mingw-w64 sdl-2

5
推荐指数
1
解决办法
2950
查看次数

是否可以在播放之前预加载整个HTML5视频源?

我创建了一个使用XHR并通过条形图报告加载进度的已接受答案的工作示例.

它可以在这里找到.

https://github.com/synthecypher/full-preload

我注意到当我创建一个<video>带有源的元素并调用load()它将加载到大约36%然后停止,除非你,play()它在那时它将继续加载播放时的其余视频.

但是,我想确保整个视频在手动加载,因为它是定时练习中的元素,如果在练习期间互联网连接中断,我将不得不检测到这样的事件并重新开始练习.

我假设这是HTML5媒体元素的内置功能,但它是否可以覆盖此本机功能?

我已经尝试加载整个视频源作为arraybuffer使用XMLHttpRequest,然后将其转换为一个blob和设置为src一个的<source>我的元素<video>的元素.

这确实有效,但它并不理想,因为我无法通过使用进度条向用户报告下载进度,因为XHR是一个同步操作,并且会导致我的JavaScript挂起,直到收到响应.我知道XHR2现在有这种功能,但我必须支持IE8 +所以这不是一个选择.

是否有一个更简单,更优雅的解决方案来解决我的问题?

要求

  • 需要在播放前预加载整个<video>元素<source>.
  • 需要报告进度

javascript video jquery html5 preload

5
推荐指数
2
解决办法
7340
查看次数

纵向?

如何将手机屏幕应用程序的方向锁定为肖像?

我目前config.xml正在使用此偏好:

<preference name="orientation" value="portrait"/>

然而,它没有任何区别,我仍然可以通过旋转我的移动测试设备来定位我的应用程序在两个方向.

另外,如果你知道一个活跃的phonegap/cordova社区,你可以发一个链接吗?

javascript mobile screen-orientation cordova

3
推荐指数
1
解决办法
2497
查看次数

简化if语句?

可以简化这个if语句吗?

如果是的话,答案是什么?

    if (type)
    {
        if(NdotL >= 0.0)
        {
            color   += Idiff + Ispec;
        }
    }
    else
    {
        color   += Idiff + Ispec;
    }
Run Code Online (Sandbox Code Playgroud)

logic

2
推荐指数
2
解决办法
99
查看次数

为什么我输入无效无限循环?

当初始选择无效时,为什么这会导致我陷入无限循环?

while (true) {
    System.out.print("Choice:\t");
    try {
        int choice = scanner.nextInt();
        break;
    } catch (InputMismatchException e) {
        System.out.println("Invalid Input!");
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Choice: df
Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input!
Choice: Invalid Input! …
Run Code Online (Sandbox Code Playgroud)

java exception infinite-loop java.util.scanner inputmismatchexception

2
推荐指数
1
解决办法
283
查看次数

Double.MIN_VALUE和Double.MAX_VALUE之间的随机加倍?

任何人都知道如何实现这一目标.我尝试了通常的公式,但我只得到正数<= 10:

Double.MIN_VALUE + Math.random() * ((Double.MAX_VALUE - Double.MIN_VALUE) + 1)

java random

0
推荐指数
1
解决办法
348
查看次数