DLL LoadLibrary ServiceMain?不知道到底是哪的有关问题
DLL LoadLibrary ServiceMain?不知道到底是哪的问题。
我在Serv.dll的ServiceMain函数里动态调用了Abs.dll的函数,并将Serv.dll注册为服务。当服务启动后,ServiceMain是可以执行的,但是当我再用其他程序LoadLibrary( "Abs.dll ")时就会出错,返回NULL。
如果不注册为服务,那就没这个问题,几个程序来LoadLibrary( "Abs.dll ")都正常。
有谁知熬怎么回事啊????????????
其中Abs.dll只有动态库,没lib。大致代码如下:
ServiceMain()
{
hDll = LoadLibrary( "Abs.dll ");
while(Status!=STOP)
{
我的工作代码。。。。
}
FreeLibarary(hDll);
}
------解决方案--------------------
LoadLibrary 失败后用GetLastError看看错误代码是什么。
我直观感觉是你的路径不对,你的System Path和你的登陆用户Path可能不同,所以导致找不到你的abs.dll。
其实尽量不要使用LoadLibrary,这个用SearchPath乱找,不定出什么结果。还是用LoadLibraryEx传入绝对路径。
------解决方案--------------------
God4(God4) ,
如果是:hDll = LoadLibrary( "Abs.dll "); 出错,你的Abs.dll 里面初始化的代码调用了相关HWND的东西。
我在Serv.dll的ServiceMain函数里动态调用了Abs.dll的函数,并将Serv.dll注册为服务。当服务启动后,ServiceMain是可以执行的,但是当我再用其他程序LoadLibrary( "Abs.dll ")时就会出错,返回NULL。
如果不注册为服务,那就没这个问题,几个程序来LoadLibrary( "Abs.dll ")都正常。
有谁知熬怎么回事啊????????????
其中Abs.dll只有动态库,没lib。大致代码如下:
ServiceMain()
{
hDll = LoadLibrary( "Abs.dll ");
while(Status!=STOP)
{
我的工作代码。。。。
}
FreeLibarary(hDll);
}
------解决方案--------------------
LoadLibrary 失败后用GetLastError看看错误代码是什么。
我直观感觉是你的路径不对,你的System Path和你的登陆用户Path可能不同,所以导致找不到你的abs.dll。
其实尽量不要使用LoadLibrary,这个用SearchPath乱找,不定出什么结果。还是用LoadLibraryEx传入绝对路径。
------解决方案--------------------
God4(God4) ,
如果是:hDll = LoadLibrary( "Abs.dll "); 出错,你的Abs.dll 里面初始化的代码调用了相关HWND的东西。