你是否正在寻找关于loadlibrary失败的内容?让我把最完整的东西奉献给你:
当前位置:我的异常网» VC»用LoadLibrary加载DLL失败,为何呢
用LoadLibrary加载DLL失败,为何呢
网友分享于:-12-30浏览:284次
用LoadLibrary加载DLL失败,为什么呢?
我用的是VC,生成了一个DLL,然后在程序中加载这个DLL,如下:
HINSTANCEhDll=::LoadLibrary("D:\\hkrt.dll");
DWORDdwErr=::GetLastError();
执行结果是这样的:在我的开发机器上加载是正常的,但把程序和DLL放在一台没有装VC的机器上执行时,加载就失败了,hDll的值是0,dwErr的值是14001,查了查“ErrorLookup”,14001对应的描述是:“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”。
我先后试了三台没有安装VC的机器,都是这个问题。
我上网查原因,有人说需要安装“.NetFramework”,于是我下载了“.NetFramework2.0”并安装,之后动态库可以正常调用了。
这个程序和这个DLL是需要打成安装包的,如果再把“.NetFramework2.0”打进安装包,安装包的体积就会变得很大,由于一些原因,生成的安装包不能很大。
我奇怪的是,为什么调用一个标准的动态库还需要在机器上安装.Net呢?不安装不行吗?
我想问一下,有什么方法可以在不安装.Net的情况下正常调用?
谢谢了!
------解决方案--------------------
是由于加载DLL才需要“.NetFramework2.0”吗?可以把DLL设置一个最简单的函数调用试试,如果可以调用成功就是DLL引起的,否则,不是DLL引起的,那就是跟你调用的程序有关系了,。那就必须安装“.NetFramework2.0”了。因为你开发的时候是在“.NetFramework2.0”下面开发的。
------解决方案--------------------
如果实在不行,有个办法就是导入到VC6.0环境下面,那就不需要“.NetFramework2.0”了。
------解决方案--------------------
很可能是客户机上没有8.0的C/C++运行期库,
去下载个:
Downloaddetails:VisualC++RedistributablePackage(x86)
安装部署试试看,8.0的C库搞了个sidebyside部署方式
------解决方案--------------------
是不是你制作安装包的时候点击安装包的项目名称选择它的属性看看其配置去掉“.NetFramework2.0”,如果你已经去掉了还要的话,就改用vc6.0做吧!
------解决方案--------------------
两个方案:
1.将代码在VC6下重新编译一下(不支持降解,需生成同成同名同类型工程,然后将源文件替换)
2.安装.NetFramework2.0
以上就是关于loadlibrary失败的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-/a/ruanjian/article-11984-1.html