·我的程序使用串口进行收发数据,在VC中调试程序的时候,没有出现有关的串口错误提示,但是,直接运行编译好的调试程序,就报错,说串口错误,错误码是2,我查了一下Error Lookup,2是系统找不着指定文件。后来我在将程序编译成Release版本,这样的错误又消失了,为什么同一个程序,只是脱离了VC环境,或者版本不同,运行的结果就不一样了呢?
·程序中要链接到ADVAPI32.LIB,在调试环境下编译,没有出现任何警告和错误,但是在发布版本下,却出现了如下的警告信息:
LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF
我不知道是不是这个警告信息的缘故,但是发布版本的确出现了错误(不是系统崩溃方面的,而是无法达到预期的结果),但是在调试环境下运行的调试程序,就没有错误(可以获得预期的结果)。
预期的结果:我的程序用到ADO对数据库进行添加查询等操作,调试环境下运行的调试版本程序,可以正确找到所需的数据,但是发布版本有时可以找到,有时却找不到。

解决方案 »

  1.   

    LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF
    这条警告信息只是告诉你没有程序中的代码并没有调用到advapi32.dll这个动态库函数接口而已
      

  2.   

    “这条警告信息只是告诉你没有程序中的代码并没有调用到advapi32.dll这个动态库函数接口而已”,意思是说,程序可以不用链接到advapi32.lib的库吗?
    刚才我试了一下,把它删掉了,但编译出来还是有那个警告信息!
      

  3.   

    DEBUG版本的问题一定要解决,不要认为Release版本没有问题就可以了.这样肯定留下了bug.
    在程序多加入ASSERT之类的判断,发现bug的机会便加大了.
      

  4.   

    也不知道“advapi32.dll”是否专为Debug提供服务的,由于在Debug环境下编译,不会出现那个警告提示,但只要在Release下,就肯定出现,因此我想了一个办法,针对Release环境的工程Settings中,在Link属性页里,我将“Generate Debug Info”选中,然后重新编译,没想到竟然没有再出现警告了。后来我又将该选项去除,就又出现了,也许这个动态库确实是为Debug提供服务的。不知道是否有专门介绍调试和编译的书?虽然经过选项改变使警告信息不再出现,但仍是茫然一片,而且,两个版本运行结果不能保持一致的问题依然存在,唉,真不知该如何是好?