今天编译一个程序,发现Debug版本完全正常编译运行,但是一到Release就出现问题:
1、无法定位程序输入点 xxxx 于动态链接库 xxx.dll 上:
2、我再去检查下xxx.dll ,乍一看好像没什么问题,仔细一看,好像有点不对劲了:
3、看到有个红色的感叹号,提示 module has missing imports ???这是什么鬼? 看看右上方的导入信息, ass_xxx 的函数都是 libass.dll 的导出函数,也就是当前程序的导入表项 avutil-55.dll 不正常
4、接着用 LordPE 看一下
发现里面的值都是有问题的,Release 版本调试,转到反汇编,跟进call,发现jmp到一个随便的地址,模块里 avutil-55.dll 也根本没有加载。。。无解
5、我以为库坏了,新建工程,各种折腾,,无解,虚拟机重装vs再编译还是无解,但是我后来意外发现我的另外的一个程序也是用的这个库,那个编译的Reasele版本就没有任何问题,这就让人很头大,看来是VS配置问题了,没办法,两个工程一点点对比。
6、最终终于找到了罪魁祸首:
把这个引用设置成:否! 终于,一切都正常了,花了我整整一天的时间,,真是让人头大~!