本帖最后由 csz_1987 于 2014-09-04 16:35:37 编辑

解决方案 »

  1.   

    <span style="color: #FF0000;">\\Other\\Lib.dll</span>
    这是啥
    在代码里加颜色不好用的
      

  2.   

    晕,刷新之后,居然好用了
    升级了?改成Other\\Lib.dll这样试试
    前面不要加多余的\\
      

  3.   


    还是一样,DllNotFoundException。找不到Dll。
    还是 Winform不支持我的这种需求?感觉不应该啊。
      

  4.   

    到底是Others,还是Other
    不会就差个s吧
      

  5.   


    不是,这个是我帖子里面输入错误,我也发现这个输入错误了,但是过了编辑时效了,csdn不给我权限编辑。
    项目里的是对的。
      

  6.   

    http://www.cnblogs.com/szytwo/archive/2011/12/11/2283780.html不过一般很少人这么干 新的DLL直接就替换旧的版本 向下兼容就行了..
      

  7.   


    这博文看过,没解决问题。
    博文里说的:“Web中的,同时也是应用程序中的
    后来发现用[DllImport(@"C:\OJ\Bin\Judge.dll")]这样指定DLL的绝对路径就可以正常装载。”实际上他还是放在程序的同级目录。如果博主的Judge.dll 放到 C:\OJ\Bin\Other\Judge.dll 下,
    我想他的 一样也是识别不到 Other目录里的Judge.dll。
    目前就一个外设的dll,将来还会有扫描枪,读卡机,RFID读卡机的外设添加。
    每个厂商都会给一个他们自己个dll给我们调用他们的设备。为了使得目录结构清晰,我希望外设的dll统一存放于一个文件夹内。
    我想应该挺多人都会想这么干的吧。保持程序运行目录的干净。
      

  8.   

    如果你这么想 还不如把所有的DLL都扔到system32呢...更干净了 毕竟 这些DLL都是非托管的 在system32下更合适..而且有的东西还需要驱动 正好驱动也在system32....
      

  9.   

    http://stackoverflow.com/questions/8836093/how-can-i-specify-a-dllimport-path-at-runtime
      

  10.   

    <configuration>
       <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
             <probing privatePath="子目录名"/>
          </assemblyBinding>
       </runtime>
    </configuration>
      

  11.   

    这个dll是不是还有别的依赖项?
      

  12.   

    10L的方法可以试试。另外也可以直接用LoadLibaray API,以及GetProcAddress。11L的方法是针对托管dll的,对lz来说不适用。
      

  13.   

    http://www.cnblogs.com/szytwo/archive/2011/12/11/2283780.html
      

  14.   

    谢谢,问题解决了。在P/Invoke前,通过Win32 API    SetDllDirectory (string lpPathName)设置程序默认的搜索路径。DllImport那边只声明dll 文件名即可。