调用vc写的dll,声明如下:
procedure GBW(abc:HDC; gwidth: integer; gheight: integer; frColor: TColor; bkColor: TColor) Stdcall; external 'GBJdll.dll' index 1结果每次都现实一个出错对话框
Project MDIAPP.exe raised exception class EAccessViolation with message 'Access violation at address
00000000. read of address 00000000'. Process stopped. Use Step or Run to continue.
请问原因何在?

解决方案 »

  1.   

    估计是你的调用方式不对,将你的stdcall换成cdecl方式看看
      

  2.   

    小子,调用VC中函数吧,VC中的过程有能装过程的DLL吗?
      

  3.   

    vc中只有函数没有过程,所以用procedure是不行的,要用function!!!
      

  4.   

    To spade:
             procedure是可以的,这我确定,因为我曾用过
      

  5.   

    To spade:
             procedure是可以的,这我确定,因为我曾用过
      

  6.   

    To spade:
             procedure是可以的,这我确定,因为我曾用过
      

  7.   

    應該是聲明有問題,
    特別注意 TColor;
      

  8.   

    注意类型的一致,再者在工程和调用单元的uses第一位置加上sharemem
      

  9.   

    不用过程
    用函数绝对可以的
    function GBW(abc:HDC; gwidth: integer; gheight: integer; frColor: TColor; bkColor: TColor) Stdcall; external 'GBJdll.dll';你这个没有返回值的吗?别那么死心眼
    用函数可以达到要求为什么要用过程呢?
      

  10.   

    是stdcall-》cdcel的问题
    和function无关,本来就无返回值的
      

  11.   

    是stdcall-》cdcel的问题
    和function无关,本来就无返回值的0,0,90,0,0,0,0,0,0,10,0
    贴子回复次数大于跟给分次数 
    这个什么意思?为何无法结帐?
      

  12.   

    是stdcall-》cdcel的问题
    和function无关,本来就无返回值的0,0,90,0,0,0,0,0,0,10,0
    贴子回复次数大于跟给分次数 
    这个什么意思?为何无法结帐?