在Delphi 2009上,关于一个新的VCL项目:
procedure TForm1.FormCreate(Sender: TObject);
var
Handle: THandle;
begin
Handle := loadlibrary('oci.dll');
if Handle <> 0 then
begin
try
ShowMessage('Success');
finally
FreeLibrary(Handle);
end;
end
else
ShowMessage('Fail');
end;
如果我从IDE运行Exe,它会失败,如果我从目录运行EXE,只需双击它就会成功!! ??
请告诉我我错过了什么。
谢谢, 佛瑞德
编辑:通过IDE启动EXE与Delphi 7一起使用!! WTf是D2009的问题?
答案 0 :(得分:4)
LoadLibrary失败的常见问题是所需的DLL不在DLL search path.。由于某种原因,D2009可能没有搜索相同的文件夹。
为了确保,您应该使用类似......
之类的内容获取错误的更多详细信息ShowMessage(SysErrorMessage(GetLastError));
尝试(甚至暂时)将“oci.dll”放在与项目的.EXE相同的目录中,然后重试。
以下是要检查的内容:
答案 1 :(得分:2)
如果依赖DLL位于同一目录中......请确保您的启动目录是它。
在Visual Studio中也一直发生这种情况......
答案 2 :(得分:0)
我怀疑独立调用是否有效,因为DLL恰好位于当前目录中。
并且,从IDE启动时,当前目录与EXE目录不同。
您是否尝试使用DLL的完整路径(例如,来自ParamStr(0)的路径加上DLL名称)?