自己开发的DLL,在2000上可以加载,在新装的xp上却加载失败,loadlibrary返回的是空值!

wd_6532 2005-01-07 02:20:36
扩展的.dll


烦恼!

...全文
293 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceheart 2005-01-13
  • 打赏
  • 举报
回复
回复人: wd_6532(无心) ( ) 信誉:99
to iceheart
你用什么,就可以不用关心是否能在客户系统上运行起来了??

-----------------------

我用SDK方式,创建一个win32 Dynamic-Link Library,自己添代码
wd_6532 2005-01-11
  • 打赏
  • 举报
回复
明白了!

如果是共享链接,就会报错 找不到什么mfc*.dll

如果是静态链接,就会 loadlibrary返回空值

解决方法:
不管是静态链接还是共享链接,我的程序都必须把
MSVCRTD.DLL,MFCO42D.DLL,MFCD42D.DLL,MFC42D.DLL全部拷到运行系统上.

可能静态链接只需要其中的几个,但是我还是全部拷贝了.


to gaoshengqiang
你肯定也是这个问题吧.
wd_6532 2005-01-11
  • 打赏
  • 举报
回复
to iceheart
你用什么,就可以不用关心是否能在客户系统上运行起来了??
wd_6532 2005-01-11
  • 打赏
  • 举报
回复
up
wd_6532 2005-01-10
  • 打赏
  • 举报
回复
broown
就是静态连接.
wd_6532 2005-01-10
  • 打赏
  • 举报
回复
to icehear:
对啊,我上面说了,是扩展的,MFC扩展DLL.
gaoshengqiang 2005-01-10
  • 打赏
  • 举报
回复
我也遇到了同样的问题,在我的XP上能加载,在同事的XP上就是加载不了,至今未果
iceheart 2005-01-10
  • 打赏
  • 举报
回复
用了MFC的DLL需要静态连接,否则就需要将mfc42.dll、mfc42d.dll、mfc42u.dll、mfc42ud.dll(可能还有其他的)等复制到系统目录下。

我不喜欢mfc,主要就是这个原因。
wd_6532 2005-01-10
  • 打赏
  • 举报
回复
up
wd_6532 2005-01-10
  • 打赏
  • 举报
回复
to oyljerry:
没有MFC环境,就loadlibrary返回空值吗?
可是有的dll是可以取得句柄的而不报错误的.
oyljerry 2005-01-10
  • 打赏
  • 举报
回复
XP上有没有MFC环境
hyamw 2005-01-08
  • 打赏
  • 举报
回复
这就没碰到过了。检查路径有没有问题?或者可能是 tonyswe(tong) 说得那样。
iceheart 2005-01-07
  • 打赏
  • 举报
回复
是不是用MFC了?
hongtog 2005-01-07
  • 打赏
  • 举报
回复
上次曾遇到过在2000上加载失败,loadlibrary返回的是空值!
后来一查才知道是2000的bug,打上server packet 4就可以了。
参考:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;327194
Windows 2000 Service Pack 4 中修复的错误的列表
里面就有:
324673 LoadLibrary() 函数找不到 DLL 名称
不知xp是否也有bug
broown 2005-01-07
  • 打赏
  • 举报
回复
你使用静态连接试试
liweiiewil 2005-01-07
  • 打赏
  • 举报
回复
可能不是2000与XP的问题,是电脑中是否有VC的问题,你在一台没有VC的2000下运行试试呢?
wd_6532 2005-01-07
  • 打赏
  • 举报
回复
to hyamw:
那还得在xp上装vc啊,机器是别人的.
比如有a.dll,b.dll

a.dll 在我的2000上可以加载,在一个同事的xp上也能加载.
b.dll 在我的2000上可以加载,在他的xp上却加载失败.

下面是代码

HMODULE hDllModule=LoadLibrary(strFilePath);

if (hDllModule==NULL)
{
strTip="路径为";
strTip+=strFilePath;
strTip+="的DLL 加载失败";
AfxMessageBox(strTip);

return;
}
hyamw 2005-01-07
  • 打赏
  • 举报
回复
用GetLastError()看看错误信息
xuzheng318 2005-01-07
  • 打赏
  • 举报
回复
可能是一些服务你没有开,xp比2000多了好多
oyljerry 2005-01-07
  • 打赏
  • 举报
回复
应该不会啊,再检查一下

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧