release的程序发布在win7,xp等操作系统上(32 or 64)均可以正常运行,唯独发现在server2003 64位的机器上无法启动,直接报av00000000的错误。
因为没法在这个环境上直接调试,通过日志定位到的是调用dll的导出函数是出现的问题。
后来一想av0000000是空指针访问的异常类型,难道是dll没加载上?
于是在正常机器上把加载dll的路径改成一个错误的文件路径,果然出现了同样的问题。
怀疑是在那个系统上文件路径上有问题(比如有乱码等情况),dll本身是在exe同目录中。
可是日志记录发现文件路径也都在正常,唯独LoadLibrary的返回值是0。
肯定是dll本身缺少依赖引起的问题,果断拿出大杀器dependencywalker,查了一下那个系统上我们的dll的依赖关系
果然少了几个
(这几个其实是多余的,修正dll的依赖即可)