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

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  ...

你可能感兴趣的:(软件产品开发)