社区
C++ 语言
帖子详情
DLL加载失败
kanguolaikanguolaik
2010-10-26 10:20:02
HINSTANCE hInst = LoadLibrary(TEXT("testdll.dll"));
if(!hInst)
{
MessageBox(TEXT("Fail to load dll."));
return;
}
总是返回加载失败。。
testdll.dll已经在当前目录中了。。。。。。
为什么????
...全文
211
9
打赏
收藏
DLL加载失败
HINSTANCE hInst = LoadLibrary(TEXT("testdll.dll")); if(!hInst) { MessageBox(TEXT("Fail to load dll.")); return; } 总是返回加载失败。。 testdll.dll已经在当前目录中了。。。。。。 为什么????
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FengRider
2010-10-28
打赏
举报
回复
想了很久,实在是不好确定,难道是路径中有空格或者是汉字的原因引起的?
一般我用LoadLibrary的时候,里面就不用TEXT这个函数。如果TEXT函数中的参数字符串包含中文或者其它非英语半角标点字符,可能会引发一些意外的问题。
kanguolaikanguolaik
2010-10-26
打赏
举报
回复
没人回复。。 加分
kanguolaikanguolaik
2010-10-26
打赏
举报
回复
[Quote=引用 5 楼 luciferisnotsatan 的回复:]
GetLastError的错误码是什么?
[/Quote]
返回127 找不到指定的程序。
kanguolaikanguolaik
2010-10-26
打赏
举报
回复
DLL模块的cpp文件:
#include <Windows.h>
#include <string>
#include <Shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
using namespace std;
BOOL APIENTRY DllMain(HINSTANCE hInst,DWORD dwReason,LPVOID lpReserved)
{
if(DLL_PROCESS_ATTACH == dwReason)
DisableThreadLibraryCalls(hInst);
return TRUE;
}
BOOL _stdcall RegWrite()
{
HKEY hKey = NULL;
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("Software\\abcd"),0,KEY_ALL_ACCESS,&hKey))
{
DWORD dwType = REG_DWORD;
DWORD dwValue = 1234;
DWORD dwValueLen = sizeof(DWORD);
if(ERROR_SUCCESS == RegSetKeyValue(hKey,TEXT("a"),0,dwType,(const BYTE*)&dwValue,dwValueLen))
{
}
dwType = REG_SZ;
string str = "hello helo.";
const char *pstr = str.c_str();
dwValueLen = str.length();
if(ERROR_SUCCESS == RegSetKeyValue(hKey,TEXT("b"),0,dwType,(const BYTE*)pstr,dwValueLen))
{
}
dwType = REG_BINARY;
char buf[4] = {0};
buf[0] = 0x01;
buf[1] = 0x02;
buf[2] = 0x03;
buf[3] = 0x04;
dwValueLen = sizeof(buf);
if(ERROR_SUCCESS == RegSetKeyValue(hKey,TEXT("c"),0,dwType,(const BYTE*)buf,dwValueLen))
{
}
RegCloseKey(hKey);
}
return TRUE;
}
BOOL _stdcall RegDelete()
{
SHDeleteKey(HKEY_CURRENT_USER,TEXT("Software\\abcd1"));
SHDeleteValue(HKEY_CURRENT_USER,TEXT("Software\\abcd"),TEXT("d"));
return TRUE;
}
DLL模块的def文件:
LIBRARY "testdll"
EXPORTS
RegWrite
RegDelete
调用DLL的模块:
void CTestapp2Dlg::OnButton1()
{
HINSTANCE hInst = LoadLibrary(TEXT("C:\\Documents and Settings\\Administrator\\桌面\\testapp2\\testdll.dll"));
DWORD ret = GetLastError();
if(!hInst)
{
MessageBox(TEXT("Fail to load dll."));
return;
}
typedef BOOL (_stdcall *REGWRITE)();
typedef BOOL (_stdcall *REGDELETE)();
REGWRITE RegWriteFunc = (REGWRITE)GetProcAddress(hInst,"RegWrite");
REGDELETE RegDeleteFunc = (REGDELETE)GetProcAddress(hInst,"RegDelete");
if(!RegWriteFunc || !RegDeleteFunc)
{
MessageBox(TEXT("Fail to load func."));
FreeLibrary(hInst);
return;
}
RegWriteFunc();
RegDeleteFunc();
FreeLibrary(hInst);
}
luciferisnotsatan
2010-10-26
打赏
举报
回复
GetLastError的错误码是什么?
ouyh12345
2010-10-26
打赏
举报
回复
\\桌面\testapp2
\\桌面\\testapp2
路径中最后不要有汉字
kanguolaikanguolaik
2010-10-26
打赏
举报
回复
[Quote=引用 1 楼 fengrider 的回复:]
1、去掉TEXT函数试试;
2、你将testdll.dll绝对路径加上去试试看。
怀疑加载失败的原因是因为字符转化后的DLL路径,无法被LoadLibrary识别。用上述两种方法分别试一下看看具体是什么情况
[/Quote]
HINSTANCE hInst = LoadLibrary(TEXT("C:\\Documents and Settings\\Administrator\\桌面\testapp2\\testdll.dll"));
if(!hInst)
{
MessageBox(TEXT("Fail to load dll."));
return;
}
改成了绝对路径 还是不行。。。 去掉了TEXT后也是不行。。。怪了 以前从来没遇到过这种情况。。
ouyh12345
2010-10-26
打赏
举报
回复
GetLastError返回什么?
路径、依赖库是否都满足?
FengRider
2010-10-26
打赏
举报
回复
1、去掉TEXT函数试试;
2、你将testdll.dll绝对路径加上去试试看。
怀疑加载失败的原因是因为字符转化后的DLL路径,无法被LoadLibrary识别。用上述两种方法分别试一下看看具体是什么情况
电脑反应速度慢的原因及解决方法
Windows 系统过于庞大,随着你每天的操作,安装新软件、删除一些软件之后它
加载
运行
DLL
文件仍然会存在,因而随着使用日久,Windows 的启动和退出时需要
加载
的
DLL
动态链接库文件越来越大,自然系统运行速度也就...
win10 电脑中模块initpki.
dll
加载
失败
提示0x80004005错误代码如何解决
win10 电脑中模块initpki.
dll
加载
失败
提示0x80004005错误代码如何解决 有不少win10系统用户反映说碰到这样一个故障,就是模块initpki.
dll
加载
失败
,并提示0x80004005错误代码,该怎么解决呢,接下来就随系统城小编一...
steamui.
dll
加载
失败
怎么解决?没有找到Steamui.
Dll
修复方法
steamui.
dll
加载
失败
怎么解决?steamui.
dll
(win10缺少steamui.
dll
修复文件)是steam平台上不可缺少的steamui.
dll
系统文件。steamui.
dll
(win10缺少steamui.
dll
修复文件)为用户快速修复steamui.
dll
缺失问题。可能经常有...
【已解决】计算机丢失d3d12.
dll
怎么办?d3d12.
dll
加载
失败
怎么办
d3d12.
dll
加载
失败
怎么办?如果你在使用电脑时遇到D3D12.
dll
文件丢失了,不用着急,使用小编带来的这款D3D12.
dll
文件修复工具就能轻松解决问题了。D3D12.
dll
是存放在windows系统中至关重要的
dll
文件,缺少该文件可能...
msxml4.
dll
加载
失败
、动态链接库例程
失败
用户使用我们行业软件,打开程序出现:msxml4.
dll
加载
失败
,程序退出! 故障系统: XP 解决方案: ①从互联网上下载msxml4.
dll
文件,放至对应目录,XP为:C:\Windows\System32 ②用cmd运行:regsvr32 msxml4.
dll
...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章