高手们帮我看看DELPHI调用DLL的问题在哪

telstar 2005-05-20 10:52:26
1、我用VC6.0做了一个MFC DLL
输出函数定义如下:
extern "C" _declspec(dllexport) void GetCheckData(double * mWeight, double * mHight);
2、我用以下VC代码在调用该函数,没有任何问题:
void CAppDlg::OnButton1()
{
// TODO: Add your control notification handler code here
double mfWeight=0.0,mfHight=0.0;
CString stra;

HINSTANCE hin;
typedef (*myfun)(double*,double*);
myfun proc;

hin=::LoadLibrary("RecData.dll");
if (hin != NULL)
{
proc=(myfun)::GetProcAddress(hin,"GetCheckData");
proc(&mfWeight,&mfHight);
}

FreeLibrary(hin);
}
3、我用以下DELPHI代码调用,报MFC42.DLL中内存访问错误
type
TgetData = function (l,w:pointer): HResult; stdcall;
procedure TForm1.Button1Click(Sender: TObject);
var
lWeight,lHigh:Double;
lb:tHandle;
getCheckData:tGetData;
begin
lb := loadlibrary('E:\com\RecData\release\recData.dll');
if lb <> 0 then
begin
getCheckData := GetProcAddress(lb,'GetCheckData');
if assigned(getCheckData) then
getCheckData(@lWeight,@lHigh);
end;
end;
将TgetData = function (l,w:pointer): HResult; stdcall;
改为TgetData = function (var l,w:double): HResult; stdcall;

仍然不行

高手们帮忙啊
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Igj1012 2005-05-20
  • 打赏
  • 举报
回复
TgetData = procedure(var l,w:double); stdcall;
aiirii 2005-05-20
  • 打赏
  • 举报
回复
TgetData = procedure(l,w:pdouble); stdcall;
beyondtkl 2005-05-20
  • 打赏
  • 举报
回复
Igj1012(国产超人:报告队长!楼下那几个牛鬼蛇神很可疑)

哈哈 到處都看到你呀。。。

試試 cdecl方式。。

還有你的dll 是靜態使用mfc的還是動態聯接的?

1,183

社区成员

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

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