关于Delphi调用VC编写的DLL问题?

leiyang leiyang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我初学VC,用VC的 MFC APPWizard(DLL)创建了一个DLL,里有两个导出函数,然后在Delphi里调用,ShowHello没有参数,可以;ShowHello2有一个Pchar参数,为什么执行后总是弹出一个错误窗口。

源码如下:

VC:
// my.h : main header file for the my DLL

class CmyApp : public CWinApp
{
......
};

extern "C" __declspec(dllexport) BOOL ShowHello(void);
extern "C" __declspec(dllexport) BOOL ShowHello2(const char * aName);


//my.cpp:--------------------------------------
.......

extern "C" __declspec(dllexport) BOOL ShowHello(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

AfxMessageBox("Hello, Vc 6.0.");
return true;
}

extern "C" __declspec(dllexport) BOOL ShowHello2(const char * aName)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

AfxMessageBox("Hello, Vc 6.0.");
return true;
}


Delphi **************************************************
声明:
function ShowHello2(aName:PChar):boolean;stdcall;external 'my.dll' name 'ShowHello2';
function ShowHello():boolean;stdcall;external 'my.dll'name 'ShowHello';

调用:
var
aName:PChar;
begin
aName := StrAlloc(64);
StrPCopy(aName,'Mike');
ShowHello2(aName); //可以弹出对话框"Hello, Vc 6.0.",接着就出错了 Access violation at addres 00E8723B.Write of address 2C01B51C
StrDispose(aName);
end;


为什么 VC 中带了参数就会出错,换成其他参数也是。请各位帮忙看看哪里出了问题了?多谢了。
...全文
评论 6
收藏 已收藏
分享
返回顶部
leiyang
进程/线程/DLL 15,465 成员 49,169 内容