请问,在C++ builder中怎样使用dephi写的dll,急急急……

jiayodo 2003-09-27 09:19:48
静态跟动态的,最好能给出点例子
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanren_me 2003-09-27
  • 打赏
  • 举报
回复
呵呵:动态时定义有点错误typedef int 应改为typedef bool
netsys2 2003-09-27
  • 打赏
  • 举报
回复
不管是什么语言写的DLL,只要是标准的接口,就可以这样调用:

BCB 编写 DLL 终极手册 (Behard原作)
http://www.csdn.net/develop/Read_Article.asp?Id=18799
lanren_me 2003-09-27
  • 打赏
  • 举报
回复
c调用:
静态:生成lib文件并添加工程,然后定义:
extern "C" __declspec(dllimport) bool _stdcall daocompactdb(WideString srcfile,WideString dstfile,String psw);

动态:
typedef int _stdcall _export (*Tdaocompactdb)(WideString srcfile,WideString dstfile,String psw);
Tdaocompactdb mcompactdb;

HINSTANCE hInst=::LoadLibrary("DAOcompact.dll");

if(!hInst)
{
ShowMessage("Failed to load library");
return;
}
else
{
mcompactdb=(Tdaocompactdb)GetProcAddress(hInst,"daocompactdb");
if(mcompactdb)
{
ShowMessage("加载成功");
}
else
{
ShowMessage("Failed to locate the function you specified");
}
::FreeLibrary(hInst);
}
lanren_me 2003-09-27
  • 打赏
  • 举报
回复
delphi-DLL


library DAOcompact;

uses
Forms,
Windows,
SysUtils,
Classes,
Graphics,
Dialogs,
PRINTERS,
dao97,
ComObj,
Variants,

{$R *.res}

var
SaveExit: Pointer;

//压缩Acess97;
function

daocompactdb(srcfile:widestring;dstfile:widestring;psw:string):boole

an;stdcall; //compactdatabase
var
db:_DBEngine;
dtbs:database;
f1,f2:pchar;
begin

try
getmem(f1,100);
getmem(f2,100);
try
db:=coDBEngine.Create;
dtbs:=db.OpenDatabase(srcfile,true,false,';pwd='+psw);
dtbs.NewPassword(psw,'');
dtbs.Close;
db.CompactDatabase(srcfile,dstfile,emptyparam,emptyparam,'');
DeleteFile(srcfile);
StrPCopy(f1, dstfile);
StrPCopy(f2, srcfile);
if not copyfile(f1,f2,false) then
begin
deletefile(dstfile);
result:=false;
exit;
end;

finally
dtbs:=db.OpenDatabase(srcfile,true,false,';pwd=');
dtbs.NewPassword('',psw);
dtbs.Close;
freemem(f1);
freemem(f2);
end;
result:=true;
except // wrap up
result:=false;
end; // try/except
deletefile(dstfile);
end;

exports
daocompactdb name 'daocompactdb',

procedure LibExit;
begin
// library exit code
ExitProc := SaveExit; // restore exit procedure chain
end;

begin

SaveExit := ExitProc; // save exit procedure chain
ExitProc := @LibExit; // install LibExit exit procedure

end.

1,222

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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