连接时警告:
Linking...
LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
LINK : warning LNK4089: all references to "ole32.dll" discarded by /OPT:REF我做的一个Based Dialog的应用程序,使用静态连接库。
编译时总出现上面两个警告:(
编译成的exe程序运行正常。请问:这两个警告是什么意思?对程序正常运行有影响吗?
谢谢!

解决方案 »

  1.   

    说明你的程序中没有引用SHELL32.dll和ole32.dll,因此你可以在setting中去掉ole32.lib和
    SHELL32.lib
    不影响
      

  2.   

    这是一个优化措施,把没用到的DLL引用去掉,可以使程序启动稍微快一点
      

  3.   

    我打开Project->settings...菜单,没有找到取消这两个dll引用的地方:(
    在哪里去掉呢?谢谢!
      

  4.   

    没有必要改设置,连接程序已经为你做了优化,两个warning 只是告诉你一声而已
      

  5.   

    链接器工具警告 LNK4089/OPT:REF 已丢弃所有对“动态链接库”的引用链接器放弃了引用 dynamic-link library 中的导出的所有封装函数。因此,执行图像并不需要 dynamic-link library。可能需要考虑移除 dynamic-link library 引用以加快生成速度。如果代码中未使用的函数引用链接器已放弃的 .dll 导出,也会出现此警告。使用 /verbose 查看链接器所放弃的函数,然后将它们从代码中移除。编译器警告(等级 1)C4651为预编译头,而非为当前编译指定“definition”定义是在生成预编译头时指定的,而不是在此编译中指定的。定义将在预编译头内部有效,而在代码的其余部分则无效。
      

  6.   

    用 #pragma comment(linker "/ignore:4089) 可以取消警告。
      

  7.   

    少输一个逗号,应该是 #pragma comment(linker, "/ignore:4089")
      

  8.   

    Linker Tools Warning LNK4089
    all references to "dynamic-link library" discarded by /OPT:REFThe linker discarded all packaged functions that referenced exports in dynamic-link library. As a result, dynamic-link library and its import library are unneeded.
      

  9.   

    不影响程序。只是Release在编译时把程序给优化了。如果不想显示这个提示,可以在project->settings->linking->projects options中加上/OPT:NOREF