我在使用费尔防火墙的源代码时,发现一个问题:
if (!GetHookProvider(lpProtocolInfo, sLibraryPath)
|| (hLibraryHandle = LoadLibrary(sLibraryPath)) == NULL
|| (WSPStartupFunc = (LPWSPSTARTUP)GetProcAddress(hLibraryHandle, "WSPStartup")) == NULL
)
return WSAEPROVIDERFAILEDINIT;
上面的代码执行时hLibraryHandle = LoadLibrary(sLibraryPath)返回NULL
错误是“找不到指定的模块”,我输出sLibraryPath发现是“%SystemRoot%\system32\mswsock.dll"
我想知道LoadLibrary(“%SystemRoot%\system32\mswsock.dll");不能执行吗????
我改成LoadLibraryLoadLibrary(“C:\\WINDOWS\\system32\\mswsock.dll");就可以执行。
我可是花钱买的源代码呀
怎么可能出现这种错误呢????
谢了

解决方案 »

  1.   

    你应该问问给你源代码的人怎么调用。
    另外,你可以用一些函数取得系统的路径,然后拼凑成完整的dll路径。
    或者把这些dll放大你的exe相同路径下,然后调用。
      

  2.   

    可不可以不指定路径?
    loadlibrary好象会自动到系统目录下去找动态库。
      

  3.   

    可是%SystemRoot%\system32\mswsock.dll是从注册表里取出的数据,这个数据在不同机子上很可能是不一样的,只有从注册表中取是最可靠的!!
      

  4.   

    HINSTANCE hInst = LoadLibrary("User32.DLL");