社区
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已经在当前目录中了。。。。。。
为什么????
...全文
212
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识别。用上述两种方法分别试一下看看具体是什么情况
电脑反应速度慢的原因及解决方法
电脑反应速度慢的原因及解决方法
win10 电脑中模块initpki.
dll
加载
失败
提示0x80004005错误代码如何解决
win10 电脑中模块initpki.
dll
加载
失败
提示0x80004005错误代码如何解决 有不少win10系统用户反映说碰到这样一个故障,就是模块initpki.
dll
加载
失败
,并提示0x80004005错误代码,该怎么解决呢,接下来就随系统城小编一起来看看具体的操作步骤吧。 1、打开搜索,输入:powershell ,在windows powershell 上单击右键,选择【以管理员身份运行】; 2、在打开的框中复制下面代码粘贴进去: $arch = Get-WMIObject -Class Win3
steamui.
dll
加载
失败
怎么解决?没有找到Steamui.
Dll
修复方法
steamui.
dll
加载
失败
怎么解决?steamui.
dll
(win10缺少steamui.
dll
修复文件)是steam平台上不可缺少的steamui.
dll
系统文件。steamui.
dll
(win10缺少steamui.
dll
修复文件)为用户快速修复steamui.
dll
缺失问题。可能经常有玩家会遇到游戏打不开以及文件损坏等问题时,就是SteamUI.
dll
文件缺失和损坏了,下载此
dll
可以进行修复。 steamui.
dll
丢失的解决方法 1、从本站下载steamui.
dll
文件【下载地址】
【已解决】计算机丢失d3d12.
dll
怎么办?d3d12.
dll
加载
失败
怎么办
计算机丢失d3d12.
dll
怎么办?d3d12.
dll
加载
失败
怎么办?如果你在使用电脑时遇到D3D12.
dll
文件丢失了,不用着急,使用小编带来的这款D3D12.
dll
文件修复工具就能轻松解决问题了。D3D12.
dll
是存放在windows系统中至关重要的
dll
文件,缺少该文件可能会对造成系统不能正常运行或部分游戏无法正常运行。当你的电脑弹出“计算机中丢失D3D12.
dll
”或者“D3D12.
dll
加载
失败
”等错误提示时,来下载小编带来的这款文件修复就好了,欢迎需要的朋友来下载使用。 D3D12.
dll
丢
msxml4.
dll
加载
失败
、动态链接库例程
失败
背景: 用户使用我们行业软件,打开程序出现:msxml4.
dll
加载
失败
,程序退出! 故障系统: XP 解决方案: ①从互联网上下载msxml4.
dll
文件,放至对应目录,XP为:C:\Windows\System32 ②用cmd运行:regsvr32 msxml4.
dll
重启后,重新运行程序,若成功,则忽略下文。 注册
dll
文件时(步骤②时)若出现: msxml4.
dll
动态链接库 例程
失败
,等字样,则: ③使用微软官网提供的msxml的替代程序,http://www.microsoft.com/en-
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章