这是我的笔记欢迎指正,我用以下方法做过dll。是经过验证的。
1.
动态连接库导出函数定义:
extern "C"
__declspec(dllexport)
例如:
#define DLLImport extern "C"
__declspec(dllexport)
DLLExport __stdcall int DelUser(char *UserName,char *OrgName=""
;
动态连接库导入函数定义:
extern "C"
__declspec(dllimport)
例如:
#define DLLImport extern "C"
__declspec(dllimport)
DLLImport __stdcall int DelUser(char *UserName,char *OrgName=""
;
---------------------
BCB下静态调用方法:
{
需要DLL的3个文件。 .dll;.lib;.h;
.dll盒.lib是制作dll时可以生成的。
.h文件描述了dll的导入接口函数(使用dllimport描述的,做dll的一方,特意为使用dll一方的人制作的。)。
}
1。工程中添加上
用文本编辑器打开bcb的.bpr文件。
如下所示,添加上你要使用的dll的.lib文件。
<LINKER>
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
<ALLRES value="$(RESFILES)"/>
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib texteditdll.lib"/>
~~~~~~~~
</LINKER>
2.打开工程,在工程中添加上dll提供的.h文件。
在需要使用,该接口的地方,包含这个.h文件即可。
注意:一定要把.dll文件放到你的程序能够找到的地方。
---------------------
BCB下动态调用方法:
{
需要dll的一个文件.dll
还需要知道dll的导出函数的定义。
}
1。定义dll的导出函数指针。
void (__stdcall *CreateDefaultIndagateBook)(int RptCount,AnsiString TypeName);
2.调用dll
void loaddll()
{
HINSTANCE Dllinst=NULL;
Dllinst=LoadLibrary("Indagate.dll"
;
try
{
if(Dllinst)
{
CreateDefaultIndagateBook=(void(__stdcall*)(int RptCount,AnsiString TypeName))GetProcAddress(Dllinst,"CreateDefaultIndagateBook"
;
if(CreateDefaultIndagateBook)
{
CreateDefaultIndagateBook(Bk,RptCount,TypeName);
}
}
else
{
ShowMessage("error Indagate.dll."
;
}
}
__finally
{
FreeLibrary(Dllinst);
}
}
---------------------