偶写了一个dll for win2k和win98,可是在关于2k的代码中用到了一个x.dll,是2k特有的,是隐式link的,这个x.dll,98下没有,但是在关于98操作的代码中,没有用到这个x.dll,当在98中,我的app在load我的dll时,会由于找不到x.dll,而不能load我的dll。
我希望98和2k的dll是一个版本,所以不希望使用条件编译。不知那位大侠有妙计??

解决方案 »

  1.   

    或者把只在2k下用到的部分分离出来,单独搞一个dll,其他的部分搞一个dll,
    然后.......
      

  2.   

    用DELAYLOAD方式,MSDN中有详细说明
    You can specify which DLLs to delay load with the /delayload:dllname linker switch. If you do not plan to use your own version of a helper function, you must also link your program with Delayimp.lib.
      

  3.   

    最好修改为显示加载,如果使用DELAYLOAD方式有可能造成进程的异常退出。
      

  4.   

    如果改为显示加载,一方面增加我的程序包的大小,另一方面,由于x.dll是win2k所有,所以日后ms对它有所改动,我岂不还要考新的x.dll到我的包中保持同步。日后麻烦。
    DELAYLOAD的方法没有用过。试试了。多谢大侠们指点,继续点拨了。
      

  5.   

    我试着使用delayload 选项了,可是在98中,我的app在不能load我的dll。
    不知用法对不:
    在代码中加入
    #pragma comment(lib, "delayimp")
    #pragma comment(lib, "x")
    在setting的link项中加入
    /delayload:x.lib编译中有个warning:LINK : warning LNK4199: /DELAYLOAD:pdh.lib ignored; no imports found from x.lib不过照此法2000下的app 和dll工作正常。大侠指点迷津,或有它法,我谢先。
      

  6.   

    ok,使用delayload,
    在setting的link项中应加入
    /delayload:x.dll,
    谢谢afc,也谢谢其他朋友。