,在程序旁边放个Wsock32.dll的空文件夹,运行该程序,就会报错,,我想应该是初始化问题~(该程序运用了Wsock32.dll相关API)!, 我用了指定Wsock32.dll的读取目录,虽然对我问题已经解决,但是对其他该程序的用户,系统未必装在一个盘里!~
 
  我在程序最早执行的代码处 添加了一段删该文件夹的代码,不过也无效,一样是报错!!    不知道该如何解决了,哪为大侠前来帮忙! 高分相赠!

解决方案 »

  1.   

    你是在程序旁边建一个名为Wsock32.dll的文件夹?太有才了
    用LoadLibrary动态加载dll里面的函数会报错么?
      

  2.   

    dll搜索的路径优先是当前目录。
    wsock32.dll是系统库,放在system32目录,一般Windows都带得有。
    最多是采用动态载入的方式。var
      vSystemDirectory: array[0..MAX_PATH] of Char;
      vLibrary: THandle;
    begin
      GetSystemDirectory(vSystemDirectory, SizeOf(vSystemDirectory));
      vLibrary := LoadLibrary(PChar(string(vSystemDirectory) + '\Wsock32.dll'));
      // TODO : GetProcAddress(vLibrary, '...'); ...
      FreeLibrary(vLibrary);
    end;关键是:正常用户谁会给你创建“Wsock32.dll”目录
      

  3.   

    LoadLibrary,是可以的,,不过我使用了很多组件 如果每个组件都改一遍的话,,那..?
      

  4.   

    可不可以在读api之前 把这个文件夹删掉? 请问删除代码应该写在哪里
      

  5.   

    这不是初始化的问题,程序运行的时候会优先在本身目录里面寻找Wsock32.dll,而建立一个文件夹会使得程序优先寻找文件夹的Wsock32.dll,而这个不存在,自然就报错了
    原理不难,直接删文件夹就行了
      

  6.   

    确实是删的...问题我已经解决... 用的不是动态读取.....  大侠我想再问个问题...Ws2_32.dll 这个文件在哪里声明的 ? 他不止释放Wsock32.dll 也释放Ws2_32.dll
     我找到解决问题的办法了...想解决一下Ws2_32.dll,,但是没找到在哪声明的
      

  7.   

    似乎Ws2_32.dll 在 C:\Program Files\Borland\Delphi7\Source\Indy
                     C:\Program Files\Borland\Delphi7\Source\Vcl
    两个文件....不过这俩文件 , 怎么重读 改完没见变 汗了...dcu复制到lib这好象不好用
      

  8.   

    Ws2_32.dll也是一个接口,破坏作用和Wsock32.dll一样,都能使程序出错,因为二者都含有网络通信方面的函数与内容
      

  9.   

    是喔,,, C:\Program Files\Borland\Delphi7\Source\Rtl\Win\WinSock.pas
    是Wsock32.dll那么Ws2_32.dll是在哪里呢,, 
      

  10.   

    那个东西好像只有在VC中才有,ws2_32.lib文件,或者BCB也有,Delphi里面貌似没看到