Delphi编写的dll在C++Builder中的调用问题!

Chimae 2005-10-18 11:58:03
Delphi编写的dll源码如下:
library FSearch;

uses
SysUtils, Classes, FastSearch, DB, ADODB;

var
FastSearch1: TFastSearch;

{$R *.res}
function FastSearch(ADOQuery1: TADOQuery):String;stdcall;
var strSQL:String;
begin
strSQL:='';
FastSearch1.DataSet:=ADOQuery1;
if FastSearch1.Search() then
begin
strSQL:=FastSearch1.QueryCondition;
end;
Result:=strSQL;
end;

exports
FastSearch;

begin
end.

C++Builder中调用如下:
typedef AnsiString (GetValue)(TADOQuery*);
__declspec(dllimport) AnsiString __stdcall FastSearch(TADOQuery *adoQuery);
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE nDLL;
GetValue *theValue;
nDLL = LoadLibrary("FSearch.dll");
if(nDLL != NULL)
{
theValue = (GetValue*)GetProcAddress(nDLL, "FastSearch");
if(theValue != NULL)
Edit1->Text = (*theValue)(ADOQuery1);
}
FreeLibrary(nDLL);
}
//---------------------------------------------------------------------------
跟踪运行到Edit1->Text = (*theValue)(ADOQuery1);报错,也就是说调用Dll函数出错,请指教!
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chimae 2005-11-20
  • 打赏
  • 举报
回复
结贴,免得被扣信誉分,呵呵!
Chimae 2005-10-18
  • 打赏
  • 举报
回复
都有道理,但总的解决问题,我的目的是因为我下载的控件只支持DELPHI,不支持C++BUILDER,该控件友没有源码,是个万能查询控件;
下载地址:http://www.twsoft.cn/download/software/zqpackage.exe
shadowstar 2005-10-18
  • 打赏
  • 举报
回复
总之保持语言中立。
ThinkX 2005-10-18
  • 打赏
  • 举报
回复
也不要用TADOQuery,天知道D6,D7和C6的TADOQuery一样不。
shadowstar 2005-10-18
  • 打赏
  • 举报
回复
这个问题会经常有人问。

最好不要用AnsiString,改用PChar。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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