我将自己做的DLL改名为wsock32.dll后为何就不灵了(高手们都哪里去了?!!) (300分)

  • 主题发起人 brokensun
  • 开始时间
B

brokensun

Unregistered / Unconfirmed
GUEST, unregistred user!
在LoadLibrary时出现“无法定位序数111于动态链接库WSOCK32”<br>说明:原DLL中各输出均无指定任何序数,这个序数111是WSCOK32中的什么函数的export序数啊?<br>WSOCK32这类API库在系统上不会有什么注册吧?还是操作系统对这类API的保护?<br>这个问题怎么解决呢?请大虾们指教<br><br>&nbsp; &nbsp; &nbsp;-------------于2002年1月4日提出
 
有哪位大虾做过类似的替换工作,在做此类API动态库时要注意些什么呢?
 
wsock32.dll好像是MS SOCKET的DLL呀,在Windows的system目录下,而WINDOWS调用文件是<br>从一定的顺序搜索的,SYSTEM目录的优先权可能要比你DLL所在的目录要高,所以你的程序<br>应该是调用了SYSTEM目录下的那个吧,解决办法是改名。
 
too:Writer<br>&nbsp; &nbsp;不是吧,是先搜索工作目录的,老兄回答问题最好先试一下好么。谢谢你的答复
 
你用绝对路径试试
 
to tseug:<br>&nbsp; &nbsp;唉!不是路径的问题吧,我既然放了300在上面,不会连这么简单的问题都不去考虑吧?<br>我调用真正的WSOCK32时是不会出现上面的出错信息的!
 
要不把你的代码发给我,我中午看看吧 tseug@263.net
 
为什么一定要用wsock32.dll这个文件名?而且这个文件和WINDOWS内的文件名重复了,<br>容易引发错误,通常程序员也不会这样做啦。
 
to:tseug<br>&nbsp; &nbsp;谢谢,呵呵,不是我保守那破代码,真是没必要,只要是你随便做的DLL然后将其名改<br>为wsock32.dll,再调用,即可达到此“功效”,如果你真得认为有必要,我们用QQ联系<br>好么(54930178)?
 
不会吧?!大虾们周末也都在休息啊?
 
因为在你的程序动态调用wsock32.dll之前,OS的wsock32.dll已经装入了系统中,<br>可能是别的程序装入的,你每动态装入一次,OS只是将它的引用计数加一,<br>因为DLL的代码段是共享的。但OS可能要验证你的DLL跟原先的DLL是否一致,<br>所以才会出错。至于怎么解决恐怕要再探讨一下了。<br>
 
呵呵,谢谢,等待中...........
 
真快一晃又两天过去了........
 
难啊~~~<br>唯一能做的就是 ~~~~ 踢上一脚
 
不会吧,大家没人做过这方面的什么东西,真行不通(真的?)也给说法嘛,现在300分真得没<br>人理?!
 
我测试过了,没有你说的问题。<br>首先wsock32.dll应该是COM,所以不存在重复的问题,只要GUID不同,你写的DLL名字相同<br>是不会让其他程序找不到的。<br>我估计你的DLL中也调用了wsock32.dll,那么你自己的程序找不到自己,这是有可能的。<br>你如果用了DELPHI中的一些网络相关单元,这些单元可能会调用wsock32.dll。<br>除非你全部重载wsock32.dll的所有函数,否则你就上不了网了,呵呵!
 
to:cxx1997<br>&nbsp; wsock32.dll是COM?!!!!不会吧,您在哪里看到的。我是重载了所有函数,即使用到<br>原dll,我也会加绝对路径的,现在不是上得了上不了网的问题,是Loadlibray就出错,您<br>能把您的那个测试dll发一个给我么(wsj@xhbird.com),谢谢!不要说是按COM做的哦,那<br>就不要发了
 
wsock32.dll必须静态加载的,你不会用动态加载了吧?<br>我觉得应该是COM吧,可能我错了。
 
我做的哪个DLL没有用到原来的,你的错就在调用了原来的DLL上,发生了冲突<br>其实你可以把原来的改个名字,再把你的覆盖原来的,就看你重载的水平了
 
顶部