我现在有一vc编写的dll:
#include <windows.h>
#include "drawlib.h"int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
     return TRUE ;
}extern "C" __declspec (dllexport) BOOL CALLBACK DrawLib (HDC  hdc, int *box, float *n,POINT *apoints,int i)
{...
  }
我在delphi中调用总是说无法找到程序入口点,我是这么调用的:
function DrawLib(hdc:HDC;
box:array of integer;n:array of real;apoints: array of Tpoint;i:integer): Boolean;stdcall external 'drawljb.dll' name 'DrawLib';
请问,我在delphi中应该如何调用,我错在哪,
或者,可能我写的dll有问题(但我编译已通过),那么应该怎么写,希望能给出详细的解答,一定给分!

解决方案 »

  1.   

    function DrawLib(hdc:HDC;
    box:array of integer;n:array of real;apoints: array of Tpoint;i:integer): Boolean;stdcall external 'drawljb.dll' name 'drawlib';
    name后的大小写应与c中的一样
      

  2.   

    还有dll要在程序目录中或系统目录中
      

  3.   

    用LoadLibrary和FreeLibrary获得DLL的地址。
      

  4.   

    呵呵,你遇到专家了。
    老大你是用vc写的,是c++程序,不是c程序,这就是你的问题的关键点了。
    c++编译器在对函数编译之后,会自动给这个函数前面添加一些符号。
    所以你的c++写成的 dll所输出的函数名根本不是Drawlib.
    解决方法:
    在项目中添加一个.def文件
    里面内容;
    LIRARY ..这里写你的dll名EXPORTSDrawLib
      

  5.   

    delphi 中的动态数组和C中的数组(指针)并不对应,参考Object Pascal Reference 中的Memory Management。这里要用静态数组,例:
      TXXXX = array [0..65535] of single ;
       PXXXX = ^ TXXXX;
      传参数时用PXXXX就行了
      

  6.   

    dynamic_cast(梦的解析) 兄:能讲的更详细些吗?能否把具体的参数帮我定义出来?
      

  7.   

    声明c或c++编写的外部函数,最好用 cdecl关键字
      

  8.   

    pascal与c编译器处理参数的方法不一致