关于Delphi调用VC编写的DLL问题?
我初学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 中带了参数就会出错,换成其他参数也是。请各位帮忙看看哪里出了问题了?多谢了。