关于dll加载失败的问题!

kongling12 2009-11-06 03:46:29
小弟写了一个dll 可是加载的时候老是加载不上 代码:
str:=GetCurrentDir();
modlueHandle:=LoadLibrary(PChar(str+'Hook.dll'));//modlueHandle总是0 也不知道为什么
@InstallHook:=GetProcAddress(modlueHandle,'HookInstall');

dll中:
uses//中间省略若干变量定义和无用的方法
Sharemem,
SysUtils,
Classes,
Windows;procedure MyDllHandle(Reason:integer);
var
fhandle:THandle;
begin
case Reason of
DLL_PROCESS_ATTACH:
begin
fhandle:=CreateFileMapping($ffffffff,nil,PAGE_READWRITE,0,$ffff,'Mydll');
if fhandle=0 then
begin
if GetLastError=ERROR_ALREADY_EXISTS then
begin
fhandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False,'Mydll');
if fhandle=0 then
begin
Exit;
end;
end
else
begin
Exit;
end;
DllData:=MapViewOfFile(fhandle,FILE_MAP_ALL_ACCESS,0,0,0);
if DllData=nil then
begin
CloseHandle(fhandle);
end;

end;
end;
DLL_PROCESS_DETACH:
begin
if Assigned(DllData) then
begin
UnmapViewOfFile(DllData);
DllData:=nil;
end;
end;
end;
end;
exports
HookInstall, UnHook, HookPro;
begin
DllProc:=@MyDllHandle;
MyDllHandle(DLL_PROCESS_ATTACH);
end.

请问 为什么总是加载不了这个dll呀?
我modlueHandle:=LoadLibrary('Hook.dll');
modlueHandle:=LoadLibrary(PChar('Hook.dll'));都试过 就是不行
...全文
206 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kongling12 2009-11-07
  • 打赏
  • 举报
回复
是的 就在同一个目录下
wintergoes 2009-11-07
  • 打赏
  • 举报
回复
modlueHandle:=LoadLibrary('.\hook.dll');
这样也不行吗?
dll和你的exe在同一目录里?
simonhehe 2009-11-06
  • 打赏
  • 举报
回复
modlueHandle:=LoadLibrary(PChar(str+'Hook.dll'));//modlueHandle总是0 也不知道为什么

看看PChar(str+'Hook.dll')的值是什么, 肯定路径错了,没别的原因
kongling12 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wintergoes 的回复:]
还不对,你的DLL和你程序在一个目录里吗?
[/Quote]在啊 是一个目录的 都能找到
wintergoes 2009-11-06
  • 打赏
  • 举报
回复
还不对,你的DLL和你程序在一个目录里吗?
kongling12 2009-11-06
  • 打赏
  • 举报
回复
没人?
kongling12 2009-11-06
  • 打赏
  • 举报
回复
modlueHandle:=LoadLibrary(PChar(str+'\Hook.dll')); 这句改了modlueHandle:=LoadLibrary(PChar(str)); [Quote=引用 4 楼 kongling12 的回复:]
str:=GetCurrentDir()+'\Hook.dll';
  if not FileExists(str) then
  begin
    ShowMessage('没有这个dll');
    Exit;
  end;
  modlueHandle:=LoadLibrary(PChar(str+'\Hook.dll')); 我改成这样了 FileExists存在的引用 1 楼 starluck 的回复:
PChar(str+'Hook.dll')

fileExists ?

[/Quote]
kongling12 2009-11-06
  • 打赏
  • 举报
回复
str:=GetCurrentDir()+'\Hook.dll';
if not FileExists(str) then
begin
ShowMessage('没有这个dll');
Exit;
end;
modlueHandle:=LoadLibrary(PChar(str+'\Hook.dll')); 我改成这样了 FileExists存在的 [Quote=引用 1 楼 starluck 的回复:]
PChar(str+'Hook.dll')

fileExists ?
[/Quote]
wintergoes 2009-11-06
  • 打赏
  • 举报
回复
或者modlueHandle:=LoadLibrary('.\hook.dll');
wintergoes 2009-11-06
  • 打赏
  • 举报
回复
str:=GetCurrentDir() + '\';
starluck 2009-11-06
  • 打赏
  • 举报
回复
PChar(str+'Hook.dll')

fileExists ?

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧