我用delphi 写了个dll
代码如下:
function QrySPINFO( const BH:pchar;out MC, GG, DW,JJ:pchar):Boolean;stdcall;
begin
MC:='123';
GG:='234';
DW:='456';
JJ:=BH;
result:=true;
end;然后我又在vc里面写了个函数调用
void CTttttttDlg::OnButton1()
{
HINSTANCE hdll=::LoadLibrary("client.dll");
bool (_stdcall *QrySPINFO)(const void* , void*,void*,void*,void*);
QrySPINFO=(bool(_stdcall *)(const void*,void*,void*,void*,void*))::GetProcAddress (hdll,"QrySPINFO");
char* pSpmc=new char(100);
char* pSpgg=new char(100);
char* pSpdw=new char(100);
char* pSpjg=new char(100);
bool isok=(bool)QrySPINFO("001",pSpmc,pSpgg,pSpdw,pSpjg);
if (isok)
AfxMessageBox(pSpdw);
}结果AfxMessageBox出来的都是些奇怪的字符,而且每次点击按钮后奇怪的字符都不一样
请问这是为什么?
如果哪位能把在vc中成功调用delphi的那个dll 的代码贴出来,我全部分数送出!!!
代码如下:
function QrySPINFO( const BH:pchar;out MC, GG, DW,JJ:pchar):Boolean;stdcall;
begin
MC:='123';
GG:='234';
DW:='456';
JJ:=BH;
result:=true;
end;然后我又在vc里面写了个函数调用
void CTttttttDlg::OnButton1()
{
HINSTANCE hdll=::LoadLibrary("client.dll");
bool (_stdcall *QrySPINFO)(const void* , void*,void*,void*,void*);
QrySPINFO=(bool(_stdcall *)(const void*,void*,void*,void*,void*))::GetProcAddress (hdll,"QrySPINFO");
char* pSpmc=new char(100);
char* pSpgg=new char(100);
char* pSpdw=new char(100);
char* pSpjg=new char(100);
bool isok=(bool)QrySPINFO("001",pSpmc,pSpgg,pSpdw,pSpjg);
if (isok)
AfxMessageBox(pSpdw);
}结果AfxMessageBox出来的都是些奇怪的字符,而且每次点击按钮后奇怪的字符都不一样
请问这是为什么?
如果哪位能把在vc中成功调用delphi的那个dll 的代码贴出来,我全部分数送出!!!
解决方案 »
- 以下关键语句不懂
- Delphi XE2 使用VCL Styles后怎样单独改变某个Label的字体颜色?
- 有没有好用一点的 TScorllBar ,Delphi 自带的那个,老是闪,很不爽。
- 如何在将按钮的Enable设为False后,让其不再响应其他事件
- 错误:[Fatal Error] Spider.dpr(7): Read error on 'Main_unit.dcu' , 救命啊
- 关于TADOQuery多表更新的问题,急!!!!!!!!!!!
- dejoy 快来拿分啊,感谢你的解答
- 用Insert的sql语句能知道它作用的id号吗?
- 怎么使用adodb.recordset
- Datetimepicker的showcheckbox怎样才能初始
- 各位大哥,小弟想学DELPHI但不知道有那些书适合我,我是菜鸟.
- 用QuickReport,如何每页做一个合计?
要在DLL中用strcopy将'123'的内容复制到mc中
其实vc的中字符串是以“#0”为结尾的,因此在delphi中要填充#0到mc中
CopyMemory 或 CopyStr 这些函数来赋值,看如何