VC调用DELPHI DLL

shuihan20e 2009-12-11 06:05:11
VC调用DELPHI 写的一个DLL,然后将两个参数传递给它,传递的数据类型是字符串类型
DELPHI 中的STRING或者用PCHAR与VC中的哪个类型对应?
VC中调用咋老提示错误
error C2197: 'int (__stdcall *)(void)' : too many actual parameters

VC这样调用 的
//调用dll
HINSTANCE hDll;
hDll=LoadLibraryW(LPCWSTR("Smart.DLL"));
FARPROC lpFunc;
lpFunc=GetProcAddress(hDll,"ShowForm");
(*lpFunc)("hunter","xing"); //此行提示错误,应该怎样调用呢
小弟原来一直用DELPHI,对VC只了解皮毛,谢谢回复,分不够可以加,解决问题一定会即时结帖
...全文
106 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-12-12
  • 打赏
  • 举报
回复
hDll=LoadLibraryW(L"Smart.DLL");

hDll=LoadLibraryA("Smart.DLL");
shuihan20e 2009-12-12
  • 打赏
  • 举报
回复
hDll=LoadLibraryW(LPCWSTR("Smart.DLL"));  

这个地方就调用失败了,没有获得句柄哈
Dingnifei123 2009-12-11
  • 打赏
  • 举报
回复
尽量用Windows接受的类型,
Dingnifei123 2009-12-11
  • 打赏
  • 举报
回复
把Delphi里的参数设置成WideString
MoXiaoRab 2009-12-11
  • 打赏
  • 举报
回复
你那个Delphi DLL里面的2个参数是什么类型的
cnzdgs 2009-12-11
  • 打赏
  • 举报
回复
需要定义一个函数指针类型,GetProcAddress之后转换指针类型,然后才可以调用。参考:
typedef int (WINAPI* FUNC)(char* str1, char* str2);
FUNC lpFunc = (FUNC)GetProcAddress(hDll,"ShowForm");
lpFunc("hunter","xing");
qrlvls 2009-12-11
  • 打赏
  • 举报
回复
先用Depends打开dll看是不是标准的win32动态库
如果 GetProcAddress 失败,返回指针应该为空值
  • 打赏
  • 举报
回复
你看看dll导出的函数名字是啥.GetProcAddress 获得值有效没有
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shuihan20e 的回复:]
还是那个提示
[/Quote]
你看看dll导出的函数名字是啥.GetProcAddress 获得值有效煤油
shuihan20e 2009-12-11
  • 打赏
  • 举报
回复
procedure ShowForm(DoctorName,UserName:PChar);
begin
sDoctorName:=DoctorName;
sUserName:=UserName;
end;

exports
ShowForm;
shuihan20e 2009-12-11
  • 打赏
  • 举报
回复
还是那个提示
  • 打赏
  • 举报
回复
    typedef void( *type )( const char*, const char* );
lpFunc;
lpFunc = GetProcAddress( hDll, "ShowForm" );
( *lpFunc )( "hunter", "xing" );

试试这个
  • 打赏
  • 举报
回复
ShowForm 在delphi中声明是如何的 ?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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