如题
解决方案 »
- DELPHI的三层结构,
- 谁能够提供delphi控件属性大全?
- 请问:在两个.pas(有form)文件中传递参数,除了在一个Tform类的public 中声明公有变量,并在另一个form的代码中调用赋值外,有没有别的
- 救命啊!关于fastreport的问题!!!???
- 一个console application,a piece of cake
- 【公告】delphi控制excel的疑问:当worksheet打印有多页时,如何在每页的前面加了我自己的标题头?(分不够再加)
- SQL 查询数据库,不识别汉字,求助!!!
- 图片存入数据库
- 半夜遇到怪问题,急急,明天早上别人就要来看了!!!
- 点击DBCombobox的下拉列表中的一项,DBEdit中绑定的字段数据也随之变化,如何实现?
- 自定义报表预览时,如何按点一下鼠标便放大或缩小?qrpreview控件
- 我应该在那个板块发贴?
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TYxl=function:pchar;stdcall;
Tcjd=function:pchar;stdcall;
Tfuck=function:pchar;stdcall;
var
Form1: TForm1;
implementation
procedure TForm1.Button1Click(Sender: TObject);
var wnd : Thandle;
cjd:Tcjd;
yxl:Tyxl;
aa:Tfuck;
begin wnd:=loadlibrary('D:\cjd\DLL\Dll_pro.dll');
if wnd <> 0 then
begin
yxl:= GetProcAddress(wnd,'yxl');
cjd:= GetProcAddress(wnd,'cjd');
aa:= GetProcAddress(wnd,'fuck');
if assigned(cjd)and assigned(yxl) then
showmessage('成功!')
else
showmessage('不成功!');
end;
//调用函数
showmessage( string(cjd)+ string(aa)+ string(yxl) );
freelibrary(wnd);
end;
在project->setting->link-〉liberay modula 加入*.lib在你要调用的cpp文件中加入
extern "C"
{
声明你的dll函数
}
ok,可以用了
LoadLibrary()声明如下://自己查帮助吧
上述函数调入由lpLibFileName参数指定的DLL模块,并将其映射到调用进程的地址空间。如果调用成功,函数将返回该模块的句柄;若失败,返回值为0,并触发一异常。你可以查阅在线帮助中LoadLibrry()函数的详细说明以及可能返回的错误值。
FreeLibrary()声明如下://自己查帮助吧
FreeLibrary()函数减小LibModule指定的库的实例计数。当该DLL的实例计数是零时,调用的DLL就会被释放。实例计数记录使用这个DLL的任务数。
GetProcAddress()返回的是一个函数在模块中的地址,其中由hModule参数指定模块。
hModu le是从LoadLibrary()函数返回的结果THandle。如果GetProcAddress()调用失败,则返回nil。你只有调用GetLastError()才能获得详细的错误信息。