我想设置库的两个查找目录,
这样分两步写会覆盖掉
 SetDllDirectory("E:\\dll");
 SetDllDirectory("D:\\dll"); 
就是"D:\\dll"有效,“E:\\dll”无效。如果连在一起写,试过了也不行 SetDllDirectory("E:\\dll;D:\\dll");请教怎么写啊。。先谢了

解决方案 »

  1.   

    把E:\\dll;D:\\dll放入windows的环境变量"path"中,
      

  2.   

    把E:\\dll;D:\\dll放入windows的环境变量"path"中
      

  3.   

    把E:\\dll;D:\\dll放入windows的环境变量"path"中
      

  4.   

    同意楼上的。如果lz不想污染操作系统。可以试试SetEnvironmentVariable
    我也没试过,不敢保证一定有效。
    这个api只对当前进程有效,不影响其它进程。
      

  5.   

    把E:\\dll;D:\\dll放入windows的环境变量"path"中
      

  6.   

    刚做了个测试,比如用SetDllDirectory("E:\\dll")设置库的查找路径可以找到库。。但在PATH里加“E:\dll” 怎么就找不到啊。其它的都没有改变。。
      

  7.   

    感谢whs1980兄,注销后的确可以用了。不过现在有个问题,麻烦帮忙看下!D:\\dll 这个目录下有好两个库,01.dll、02.dll,01依赖02。现在主程序动态调用01.dll,
    如果我在path里设置d:\\dll的话,系统提示错误:“无法定位程序输入点_TestFunc@20于动态链接库02.dll上”。
    但如果我用SetDllDirectory("D:\\dll")设置路径的话就没有问题。
    (我用depends看02.dll,除了_TestFunc@20外,其它方法名都没被改变,比如有Foo1Func、Foo2Func。)
      

  8.   

    你看看别的地方是不是还有02.dll这个动态链接库
      

  9.   

    就这一个。
    提示错误的原因好像是没有经过extern “C”,所以那个函数名为_TestFunc@20,而不是TestFunc。
    不知道和这个有没有关系。
      

  10.   

    是的,extern “C”,指C的调用方式.加上还有问题吗?
      

  11.   

    我没有02.dll的源文件和头文件,所以不能修改它。
    就是说现在02.dll提供的方法有经过extern"C"过的,也有没经过extern"C"过的,
    这种情况改怎么处理呢。