LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
不知道它的这句警告是什么意思。链接库工作倒是正常,只是有这个警告看着闹心。还有一个没搞明白的问题,这个链接库在我的机子上工作正常,在另外一台98的机子上也正常,但是在其他的2000机子上链接库无法加载(我是用的动态加载(loadlibrary),返回值为NULL)。希望各位大侠能给小弟解释一下,不胜感激。

解决方案 »

  1.   

    SHELL32.dll引用了但并没被使用
      

  2.   

    这个警告只是简单的意味你错误的连接一个库(library),编译器查到你并没有使用其中的函数.这个
    警告在你做发布版(release builds)的时候是很平常的,因为/OPT:REF的连接器选项在发布版本
    (release builds)被设置成为命令连接器修正你的最终代码尽可能的避免连接无用的dlls.(这使得可执行代码的import地址表尽量的小).
    如果你不担心这个警告,你可以通过在Project->Settings对话框中加上/IGNORE:4089选项来消除它.
      

  3.   

    那么怎样避免引入无用的dll呢
      

  4.   

    哦,这样我就放心了。那么,第二个问题是怎么回事?我用getlasterror输出了错误信息,说是“找不到指定的模块”。
    我的语句是这样的,在.EXE文件中
    m_hHinstance = LoadLibrary("JY1710.dll");
    把.DLL跟.EXE文件放到了一个目录下。记得记得加载链接库的搜索顺序首先就是这个目录的,不知道到底是什么原因。