Marvin's Blog【程式人生】

Ability will never catch up with the demand for it

30 May 2021

找不到DLL导致程序无法启动

打开以前的一份老代码,在Visual Studio中编译之后发现无法启动,根本就没运行到程序入口点。

根据Entry Point Not Found, and other DLL Loading Problems 一文的提示,可以使用GFlags utility 来打开额外的调试信息:

  • 在Image File标签页
    • 输入目标exe的全名
    • 勾选Show loader snaps

然后调试器就会打印出更多信息,然后我找到了关键问题:

1d90:30e4 @ 145456375 - LdrpNameToOrdinal - WARNING: Procedure "__std_tzdb_delete_time_zones" could not be located in DLL at base 0x00007FF99B0B0000.

可惜Google不到__std_tzdb_delete_time_zones相关的信息,所以猜测是工具链或者依赖哪里出问题了,最后也没有真正解决。

根据Get reason that LoadLibrary cannot load DLL ,也可以命令行调用GFlags:'/c/Program Files (x86)/Windows Kits/10/Debuggers/x64/gflags.exe' -i main.exe +sls