DLL用C开发的,函数原形如下
int CheckProgid (int ProgId, char *Error_Message)我在DELPHI中调用如下
function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;external 'ClientDll.dll';
那里不对?
提示无法定位程序输入点,是不是没有找到DLL啊,我放在EXE的同一目录了,在SYSTME32下也放了一个。
int CheckProgid (int ProgId, char *Error_Message)我在DELPHI中调用如下
function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;external 'ClientDll.dll';
那里不对?
提示无法定位程序输入点,是不是没有找到DLL啊,我放在EXE的同一目录了,在SYSTME32下也放了一个。
注意 CheckProgid 要 大小寫 對應好的!另外, C的, 一般用:function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;external 'ClientDll.dll';stdcall;
函数名称已经被编译器改变。
变化因素比较多,我猜几个吧
function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;cdecl;external 'ClientDll.dll' name '_CheckProgid';function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;cdecl;external 'ClientDll.dll' name '_CheckProgid@4';
function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;cdecl;external 'ClientDll.dll' name '_CheckProgid@8';
最好你自己找工具去看
修改:
int __stdcall CheckProgid (int ProgId, char *Error_Message)
修改
Delphi中的声明采用Ari的方法
NAME是什么意思?我应该找什么工具?lexchow()
你说的我不是很明白,是说要我改C中的代码吗?哪个代码我这里没有啊。
动态加载方式,
type
TCheckProgid =function (ProgId:integer;var Error_Message:pChar):integer;
TForm1=class(TForm);
private
CheckProgid :TCheckProgid ;
...
//--注:大致思路是这样,可能下处有写错的地方
procedure Tform1.oncreate(sender:Tobject);
var
h:handle;
begin
h:=loadlibray('ClientDll.dll');
if h<>0 then
begin
CheckProgid :=loadmodule(h,'CheckProgid ');
end;
end;
你不是华表Cell的那个蓝天吗?怎么跑到Delphi里面混了?