我现在写了一个C语言的接口:
#ifdef MONTITOR_DLL_EXPORT
#define MONITOR_EXPORT __declspec(dllexport)
#else
#define MONITOR_EXPORT __declspec(dllimport)
#endifextern "C"
{
MONITOR_EXPORT int HelloWorld(int age);
}我的DLL名称是abc.dll我现在想在Delphi中调用这个接口,我先把DLL文件拷贝到Delphi的工程里面,然后申明如下:
type
function HelloWorld(int age):integer;cdecl;external 'abc.dll';然后在
procedure TForm2.Button1Click(Sender: TObject);
var
t : integer;
m : integer;
begin
t := 10;
m := HelloWorld(t);
end;但是这样做报错了:[DCC Error] Unit1.pas(63): E2169 Field definition not allowed after methods or properties
请问是什么原因呢?
#ifdef MONTITOR_DLL_EXPORT
#define MONITOR_EXPORT __declspec(dllexport)
#else
#define MONITOR_EXPORT __declspec(dllimport)
#endifextern "C"
{
MONITOR_EXPORT int HelloWorld(int age);
}我的DLL名称是abc.dll我现在想在Delphi中调用这个接口,我先把DLL文件拷贝到Delphi的工程里面,然后申明如下:
type
function HelloWorld(int age):integer;cdecl;external 'abc.dll';然后在
procedure TForm2.Button1Click(Sender: TObject);
var
t : integer;
m : integer;
begin
t := 10;
m := HelloWorld(t);
end;但是这样做报错了:[DCC Error] Unit1.pas(63): E2169 Field definition not allowed after methods or properties
请问是什么原因呢?
function HelloWorld(age:integer):integer;stdcall;external 'abc.dll' name 'C';
extern "C"
{
__declspec(dllexport) int HelloWorld(int age);
}
这样其实名字不会变的, 只是DELPHI调用的时候要加 cdecl
function HelloWorld(int age):integer;cdecl;external 'abc.dll' name 'HelloWorld'extern "C" __declspec(dllexport) int __stdcall HelloWorld(int age);
这样在DELPHI调用时,名字就会变的, 加个导出文件defHelloWorld @1
type
function HelloWorld(int age):integer;cdecl;external 'abc.dll';
----------------------------------
这样不需要另外加type 的
你把他看成一个函数定义就行了function HelloWorld(int age):integer;cdecl;external 'abc.dll' name 'HelloWorld'