您的位置:首页 > 其它

smplayer-16.7.0源码 32位Debug版编译、运行、调试

2016-08-08 20:53 357 查看
smplayer-16.7.0源码 32位Debug版编译、运行、调试
环境 : Qt_5_5_1_MSVC2010 + Lenovo Z470 , Win7-x86

~、 编译上
(*)
smplayer.pro 修改 ,去掉debug版前的"#"号,加在release版前面:
CONFIG += release
#CONFIG += debug

(*)
src\actionseditor.cpp 、languages.cpp等 从UTF-8无BOM转为UTF-8编码 否则编译报错如下。
..\src\languages.cpp(258) : error C2001: 常量中有换行符
..\src\languages.cpp(258) : error C2146: 语法错误: 缺少")"(在标识符"Japanese"的前面)

~、 链接上
(*)
LINK : fatal error LNK1104: 无法打开文件"libole32.obj"
把链接"libole32.obj" 替换成链接 ole32.lib user32.lib ,且加入下划线标示的库路径。

修改 build-smplayer-Desktop_Qt_5_5_1_MSVC2010_32bit-Debug\Makefile.Debug 文件中的"LIBS"这一行:
LIBS = /LIBPATH:E:\Qt\Qt5.5.1\5.5\msvc2010\lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\qtmaind.lib shell32.lib /LIBPATH:E:\Qt\Qt5.5.1\5.5\msvc2010\lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Cored.lib
z.lib /LIBPATH:..\zlib /LIBPATH:..\Lib ole32.lib user32.lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Widgetsd.lib
E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Guid.lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Networkd.lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Xmld.lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Scriptd.lib E:\Qt\Qt5.5.1\5.5\msvc2010\lib\Qt5Cored.lib debug\smplayer.res

(?)直接编译smplayer-16.7.0\zlib\contrib\vstudio\vc10\zlibvc.sln生成的 zlib\contrib\vstudio\vc10\x86\ZlibDllDebug\zlibwapi.lib不能用,提示"_inflateEnd"等符号找不到,且编译后不会自动改名为z.lib 。

处理: 先链接引用 wireshark-2.0.3\Wireshark-win32-libs-2.0\zlib-1.2.8-ws\lib\zdll.lib,可以链接、正常运行。
解决: 参Zlib 1.2.7

~、运行、调试。
替换处理:
安装、或解压官网发布的绿色版smplayer,将安装路径中的 smplayer-portable-16.7.0.0\smplayer.exe 替换为 Qt Creator编译出来的同名主程序 即可运行,并可在Creator中附加该进程以调试代码。
PS : 这一种处理方式,在32位机上,可以运行,并且用的是 Debug 版的生成替换了Release版的。
但,在64位机上,用这个方法把 Debug 版的主程序替换了Release版的,启动会报错。

64位 Debug版编译
~、
参照32位Debug版的编译。
注,链接时 有些链接参数 还是需要32位的:
()LFLAGS = ... /MANIFESTDEPENDENCY:type='win32' ...
()LIBS = ... ole32.lib user32.lib ...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: