项目场景
windows下编程一个工程调用另一个工程的动态库 .dll 文件,可执行程序在另一台pc上执行出现问题
问题描述
windows下编程一个工程调用另一个工程的动态库文件,可执行程序在本机能够执行,将动态库和可执行程序拷贝到其他pc上,可执行程序报错。
如:我出现的情况可执行程序加载动态库文件失败,做过的项目WebSocketSrvHT.exe在另一台pc上加载HTCtrlSecMiddleware60006.dll文件失败。
原因分析
1.可执行程序加载动态库路径是否正确。
我的项目是搜索算法加载动态库,不存在路径错误。
2.动态了依赖的库是否完整。
用dependency walker软件查看依赖了哪些库,库是否完整。
dependency walker软件下载地址:http://www.dependencywalker.com/
如:用dependency walker软件查看HTCtrlSecMiddleware60006.dll文件依赖了哪些库
其中少了MSVCR100D.DLL库,所以加载失败,拷贝MSVCR100D.DLL到C:\Windows\SysWOW64\ 下后,再执行可执行程序,能正常交互。
当时我的环境是win10,另一位同事环境是win11,我在我电脑上编译好动态库和可执行程序后,拷贝到另一同事的pc上,但同事执行可执行程序报错,在他电脑上安装dependency walker软件后,查看动态库HTCtrlSecMiddleware60006.dll依赖的库,发现少了一个windows的系统库,将少的那个系统库拷贝到相应的目录后,可执行程序正确启动。