我现在有一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有问题(但我编译已通过),那么应该怎么写,希望能给出详细的解答,一定给分!
#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有问题(但我编译已通过),那么应该怎么写,希望能给出详细的解答,一定给分!
box:array of integer;n:array of real;apoints: array of Tpoint;i:integer): Boolean;stdcall external 'drawljb.dll' name 'drawlib';
name后的大小写应与c中的一样
老大你是用vc写的,是c++程序,不是c程序,这就是你的问题的关键点了。
c++编译器在对函数编译之后,会自动给这个函数前面添加一些符号。
所以你的c++写成的 dll所输出的函数名根本不是Drawlib.
解决方法:
在项目中添加一个.def文件
里面内容;
LIRARY ..这里写你的dll名EXPORTSDrawLib
TXXXX = array [0..65535] of single ;
PXXXX = ^ TXXXX;
传参数时用PXXXX就行了