自己开发的DLL,在2000上可以加载,在新装的xp上却加载失败,loadlibrary返回的是空值! 扩展的.dll烦恼! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to hyamw: 那还得在xp上装vc啊,机器是别人的.比如有a.dll,b.dlla.dll 在我的2000上可以加载,在一个同事的xp上也能加载.b.dll 在我的2000上可以加载,在他的xp上却加载失败.下面是代码 HMODULE hDllModule=LoadLibrary(strFilePath); if (hDllModule==NULL) { strTip="路径为"; strTip+=strFilePath; strTip+="的DLL 加载失败"; AfxMessageBox(strTip); return; } 可能不是2000与XP的问题,是电脑中是否有VC的问题,你在一台没有VC的2000下运行试试呢? 上次曾遇到过在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 这就没碰到过了。检查路径有没有问题?或者可能是 tonyswe(tong) 说得那样。 to icehear: 对啊,我上面说了,是扩展的,MFC扩展DLL. broown 就是静态连接. to oyljerry: 没有MFC环境,就loadlibrary返回空值吗?可是有的dll是可以取得句柄的而不报错误的. 用了MFC的DLL需要静态连接,否则就需要将mfc42.dll、mfc42d.dll、mfc42u.dll、mfc42ud.dll(可能还有其他的)等复制到系统目录下。我不喜欢mfc,主要就是这个原因。 我也遇到了同样的问题,在我的XP上能加载,在同事的XP上就是加载不了,至今未果 to iceheart你用什么,就可以不用关心是否能在客户系统上运行起来了?? 明白了!如果是共享链接,就会报错 找不到什么mfc*.dll如果是静态链接,就会 loadlibrary返回空值解决方法:不管是静态链接还是共享链接,我的程序都必须把MSVCRTD.DLL,MFCO42D.DLL,MFCD42D.DLL,MFC42D.DLL全部拷到运行系统上.可能静态链接只需要其中的几个,但是我还是全部拷贝了.to gaoshengqiang你肯定也是这个问题吧. 回复人: wd_6532(无心) ( ) 信誉:99 to iceheart你用什么,就可以不用关心是否能在客户系统上运行起来了??-----------------------我用SDK方式,创建一个win32 Dynamic-Link Library,自己添代码 奇怪的问题? 谁有转发器 源码 请教:向DLL内部传递主窗口指针,并在其中创建子窗口总是失败? VC下水晶报表问题 看看这个按纽,别出心裁 为什么一个字符的ASCII只要7位 图形处理问题(一个困扰很久的问题),立等! 请教高手,关于静态分割视图的问题 GDI窗口双缓冲技术 谁在VC下做过DCOM并实现了远程调用!请指点 VC下面绘制不相交的连续线段的问题. 我做了一个鼠标钩子,功能紊乱!熟悉钩子的青筋来研究一下!
那还得在xp上装vc啊,机器是别人的.
比如有a.dll,b.dlla.dll 在我的2000上可以加载,在一个同事的xp上也能加载.
b.dll 在我的2000上可以加载,在他的xp上却加载失败.下面是代码 HMODULE hDllModule=LoadLibrary(strFilePath); if (hDllModule==NULL)
{
strTip="路径为";
strTip+=strFilePath;
strTip+="的DLL 加载失败";
AfxMessageBox(strTip); return;
}
后来一查才知道是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
对啊,我上面说了,是扩展的,MFC扩展DLL.
就是静态连接.
没有MFC环境,就loadlibrary返回空值吗?
可是有的dll是可以取得句柄的而不报错误的.
你用什么,就可以不用关心是否能在客户系统上运行起来了??
不管是静态链接还是共享链接,我的程序都必须把
MSVCRTD.DLL,MFCO42D.DLL,MFCD42D.DLL,MFC42D.DLL全部拷到运行系统上.可能静态链接只需要其中的几个,但是我还是全部拷贝了.
to gaoshengqiang
你肯定也是这个问题吧.
to iceheart
你用什么,就可以不用关心是否能在客户系统上运行起来了??-----------------------我用SDK方式,创建一个win32 Dynamic-Link Library,自己添代码