请问高人如何用DELPHI编写DLL文件。 请问高人如何用DELPHI编写DLL文件。并且调用,最好给一个例子 OK 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delphi编程人员指南和delphi从入门到精通里都有啊。只要你建工程的时候类型选择dll,然后将你需要在外部调用的函数在工程体中export出来,就可以了。调用1 直接申明,静态调用function a() "a.dll" 2 函数指针,动态调用用loadlibary [File]->New->"DLL Wizard"例子:library myDll;uses SysUtils, Classes, Printers, Windows, Messages;const str = 'abcdefg';{$R *.res}function ff(d: String): pChar;begin Result := d + str;end;exports ff;end.//写完上面代码后按 Ctrl+F9将得到 myDll(假如你的Project是以myDll保存)//=====================================在程序中调用myDll......implementation{$R *.dfm}function ff(a: String):pChar;stdcall; external 'myDll.dll';//假如myDll.dll是跟程序同一目录procedure TForm1.Button1Click(Sender: TObject);var s : String;begin s := 'I am Chinese.'; ShowMessage(ff(s));end; 上面改一下function ff(d: String): pChar;begin Result := d + str;end;改为function ff(d: String): pChar;stdcall;begin Result := d + str;end; 你最好还是看看COM/DCOM/COM+这方面的书。把基础搞好。 function ff(d: String): pChar;stdcall;begin Result := d + str;end;报错请明示在str出错 function ff(d: String): pChar;stdcall;begin Result := d + str;end;是不是你的str没有申明,你自己不会加上去吗?const str = 'abcdefg';你加了没有? function ff(d: String): pChar;stdcall;begin Result := pChar(d + str);end; HMODULE LoadLibrary( LPCTSTR lpFileName // file name of module);FARPROC GetProcAddress( HMODULE hModule, // handle to DLL module LPCSTR lpProcName // function name);BOOL FreeLibrary( HMODULE hModule // handle to DLL module);这3个API可以完成动态加载DLL。 诸位已经说的很清楚了!1)制作方式:DLL程序用DELPHI可以很容易地做出来,MFC也有向导。但MFC生成的还有MFC方式的,我看了大家的说的都是WIN32方式。2)在中调用方式:静态/动态。3)COM/DCOM/COM+用了DLL的形式,只不过扩展名有变化(OCX,TLB...), 如果你说的是这个,那看看书. 怎么对单元文件重命名 cxGrid标题栏如何分行 大虾,有关MSCOMM的数据接收问题请教!在线等待,解决后立即给分。 请教如何固定字符串的长度 怎么 读写 dat 文件 ???就 30 分了 都给了?? 需要那些控件可以实现:在一个网页里面取得需要的东西!!!!!!在线等候 delphi stringgrid 问题,请指点 一个小小的SQL语句 问题。 ASF流式文件的播放问题,,救命呀!!! 请给个用SOCKET传送数据的例子 用QuickReport做的报表,挺简单的。但一点打印或打印机设置,就死机 spcomm控件的导入问题
只要你建工程的时候类型选择dll,然后将你需要在外部调用的函数在工程体中export出来,就可以了。
调用
1 直接申明,静态调用
function a() "a.dll"
2 函数指针,动态调用用loadlibary
例子:library myDll;uses
SysUtils,
Classes,
Printers,
Windows,
Messages;
const
str = 'abcdefg';{$R *.res}function ff(d: String): pChar;
begin
Result := d + str;
end;
exports
ff;
end.
//写完上面代码后按 Ctrl+F9将得到 myDll(假如你的Project是以myDll保存)
//=====================================
在程序中调用myDll......
implementation{$R *.dfm}function ff(a: String):pChar;stdcall; external 'myDll.dll';//假如myDll.dll是跟程序同一目录procedure TForm1.Button1Click(Sender: TObject);
var
s : String;
begin
s := 'I am Chinese.';
ShowMessage(ff(s));
end;
function ff(d: String): pChar;
begin
Result := d + str;
end;
改为
function ff(d: String): pChar;stdcall;
begin
Result := d + str;
end;
begin
Result := d + str;
end;
报错请明示
在str出错
begin
Result := d + str;
end;是不是你的str没有申明,你自己不会加上去吗?
const
str = 'abcdefg';
你加了没有?
begin
Result := pChar(d + str);
end;
LPCTSTR lpFileName // file name of module
);FARPROC GetProcAddress(
HMODULE hModule, // handle to DLL module
LPCSTR lpProcName // function name
);BOOL FreeLibrary(
HMODULE hModule // handle to DLL module
);这3个API可以完成动态加载DLL。
诸位已经说的很清楚了!
1)制作方式:DLL程序用DELPHI可以很容易地做出来,MFC也有向导。但MFC生成的还
有MFC方式的,我看了大家的说的都是WIN32方式。
2)在中调用方式:静态/动态。
3)COM/DCOM/COM+用了DLL的形式,只不过扩展名有变化(OCX,TLB...),
如果你说的是这个,那看看书.