请教一个 Windows 下 VC 程序发布问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iriyave
V2EX    C

请教一个 Windows 下 VC 程序发布问题

  •  
  •   iriyave 2019-10-09 11:18:44 +08:00 4047 次点击
    这是一个创建于 2197 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己写完一个程序,会用到 msvcr100,msvcp100,D3DX9_43 之类的 dll, 打包后在客户机上安装的时候,我都是安装 VC 运行库,DX9 发行包之类的, 这些 dll 就会安装到系统目录下了,程序就可以正常运行了。

    最近看到一些大公司发布的网游,程序目录下面就带 msvcr100,msvcp100,D3DX9_43 这些 dll, 不知道这具体是怎么打包的,请教下几个问题: 1、这些 dll 在程序目录下而不在系统目录下,程序是否需要特殊处理,正常比如我用 d3d,只是包含了头文件和 lib 文件,应该是动态加载,优先加载程序目录下的 dll,是否需要改成 loadlibrary 手动加载? 2、这些 dll 随程序一起打包,与直接安装运行库有什么区别,安装后系统如果没有安装对应的 vc 运行库或者 dx 发行包,程序是否还能正常运行? 3、这些 dll 随程序一起打包是怎么操作,是有类似 QT 的 windeployqt 之类的工具?还是通过相关的 Dependencies 查看工具然后手动复制这些 dll 到程序目录?

    2 条回复    2019-10-09 19:02:20 +08:00
    yougoUp
        1
    yougoUp  
       2019-10-09 17:44:13 +08:00
    第一个问题,这是要给 DLL 搜索顺序问题,可参考微软提供的说明:
    https://docs.microsoft.com/zh-cn/windows/win32/dlls/dynamic-link-library-search-order?redirectedfrom=MSDN,
    中文的详细说明 : https://www.cnblogs.com/tocy/p/windows_dll_searth_path.html
    第二个问题,如果你对前一个问题有所了解,你应该知道了,这个本质上没有什么区别,只是在 DLL 顺序上,定位到 dll 的位置不同而已。如果没有安装对应的库,而自己本身有没有携带,程序肯定时跑不起来的。运行时会提示缺少某一个 dll。
    第三个问题,工具也是有的,只不过没 QT 的 windeployqt 那么智能,全部给你拷贝过来,window 下有个 Depends.exe 工具,你可以百度,这个可以解析出 exe 所依赖的库。然后手动拷贝。
    iriyave
        2
    iriyave  
    OP
       2019-10-09 19:02:20 +08:00
    @yougoUp 感谢解答,Dependencies 查看工具我这边用的是带 ui 的 https://github.com/lucasg/Dependencies。
    好在我这边用到的 dll 不是很多,还是手动拷贝吧。我又查了几个网游里面的 dll,有的也是没有这些 dll 需要手动装的,估计某些大厂是有自己专用的打包工具吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5797 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:43 PVG 09:43 LAX 18:43 JFK 21:43
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86