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下也放了一个。

解决方案 »

  1.   

    >>提示无法定位程序输入点
    注意 CheckProgid 要 大小寫 對應好的!另外, C的, 一般用:function CheckProgid (ProgId:integer;var Error_Message:pChar):integer;external 'ClientDll.dll';stdcall;
      

  2.   

    检查一下你的dll,估计是DLL中的函数没有使用stdcall调用方式,或者你的函数不是export的。
      

  3.   

    int CheckProgid (int ProgId, char *Error_Message)
    函数名称已经被编译器改变。
    变化因素比较多,我猜几个吧
    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';
    最好你自己找工具去看
      

  4.   

    各们大侠帮小弟看看一个简单问题吧!!!!!!!!!!!!我在调用DLL文件后程序可以正常运行,在关闭窗体时,出现Project PT_SYSTest.exe raised exception class EINvalidPointer with message 'Invalid pointer operaion'.Process stopped.Use or Run to continue.这个错误
      

  5.   

    出现那个异常是你的堆栈被破坏。
    修改:
    int __stdcall CheckProgid (int ProgId, char *Error_Message)
    修改
    Delphi中的声明采用Ari的方法
      

  6.   

    jiju(UNCC)
    NAME是什么意思?我应该找什么工具?lexchow() 
    你说的我不是很明白,是说要我改C中的代码吗?哪个代码我这里没有啊。
      

  7.   

    C中的代码函数名前面加上 __stdcall,Delphi中的声明最后加上stdcal;
      

  8.   

    如果你C写的DLL,没错的话,应该是可以的,你在C里面调用先测试一下,好象D调用C要加的什么东西进行,你查一下,我给忘记了
      

  9.   

    另外,检查一下:VC中*.def文件是否设置了
      

  10.   

    检查一下大小写看看,用spy++看一下那个dll
      

  11.   

    我曾经也写过一个delphi程序调用别人用vc写的dll,也提示不能定位,后来改用
    动态加载方式,
    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;
      

  12.   

    Cell(蓝天)
    你不是华表Cell的那个蓝天吗?怎么跑到Delphi里面混了?
      

  13.   

    extern "C" __declspec(dllexport) int CheckProgid (int ProgId, char *Error_Message)function CheckProgid(ProgId : integer; var Error_Message : pChar) : Integer;far;cdecl;external 'ClientDll.dll';