社区
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已经在当前目录中了。。。。。。
为什么????
...全文
208
9
打赏
收藏
DLL加载失败
HINSTANCE hInst = LoadLibrary(TEXT("testdll.dll")); if(!hInst) { MessageBox(TEXT("Fail to load dll.")); return; } 总是返回加载失败。。 testdll.dll已经在当前目录中了。。。。。。 为什么????
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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识别。用上述两种方法分别试一下看看具体是什么情况
C#视频聊天室源代码(VS2008)
1、bin目录下为可执行程序,直接运行.exe即可,可实现一对一,或是一对多...2、src目录为源代码,可用VS2008编译,在编译器里面调试运行时,需要将bin目录下的
dll
和video目录拷贝到.exe目录下,否则会提示
加
载
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++ 语言
64,683
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章