BCB编写及调用DLL
来源:互联网 发布:苹果手机怎么关闭网络 编辑:程序博客网 时间:2024/06/05 08:04
小工具:
implib.exe 命令行生成*.lib文件
tdump.exe 命令行生成 导出函数列表。
impdef.exe 命令行生成 导出函数定义、别名
编写:
//----------------------------------------------------------------------------------------
extern "C" __declspec(dllexport) __stdcall int myAdd(int,int); //声明导出的函数
extern "C" __declspec(dllexport) __stdcall AnsiString aboutMe(void); //声明导出的函数
int add(int n1,int n2);
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
__declspec(dllexport) __stdcall int myAdd(int x,int y)
{
return add(x,y);
}
__declspec(dllexport) __stdcall AnsiString aboutMe()
{
return "oh,it's me!";
}
int add(int n1,int n2)
{
return n1+n2;
}
//---------------------------------------------------------------------------------------------------
静态调用:
//-----------------------------------------------------------------------------------------------
准备工作:把*.dll 和*.lib放入工程目录,并把*.lib add to project
extern "C" __declspec(dllimport) __stdcall int myAdd(int,int); //声明导入的函数
extern "C" __declspec(dllimport) __stdcall AnsiString aboutMe(void); //声明导入的函数
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ShowMessage(aboutMe()); //和调用自己在当前程序中定义的函数一样。
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(myAdd(StrToInt(Edit1->Text),StrToInt(Edit2->Text)));
}
//---------------------------------------------------------------------------------------
动态调用:
//---------------------------------------------------------------------------------------
int __stdcall (*myAdd)(int,int); //声明调用的函数
String __stdcall (*aboutMe)(void);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
HINSTANCE Hinst; //声明一个DLL句柄
FARPROC Hp; //声明一个函数句柄
Hinst=LoadLibrary("MyDll.dll");//将DLL文件赋值为文件句柄
Hp=GetProcAddress(Hinst,"aboutMe"); //获得函数地址
aboutMe=(String __stdcall (__cdecl *)(void))Hp; //将内存地址强制转换为函数
ShowMessage(aboutMe());
FreeLibrary(Hinst); //释放文件句柄
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HINSTANCE Hinst;
FARPROC Hp;
Hinst=LoadLibrary("MyDll.dll");
Hp=GetProcAddress(Hinst,"myAdd");
myAdd=(int __stdcall (__cdecl *)(int,int))Hp;
Edit4->Text=IntToStr(myAdd(StrToInt(Edit2->Text),StrToInt(Edit3->Text)));
FreeLibrary(Hinst);
}
//--------------------------------------
//---------------------------------------------------------------------------------------
- BCB编写及调用DLL
- BCB编写dll(转)
- BCB编写dll
- BCB编写DLL
- BCB编写dll
- BCB编写DLL
- BCB编写dll 转载
- BCB编写dll
- 在VC中调用BCB编写的标准DLL函数库
- 关于bcb调用dll
- BCB 调用MFC DLL
- BCB 编写 DLL 终极手册
- BCB 编写 DLL 终极手册
- BCB编写DLL终极手册
- BCB编写DLL终极手册
- BCB 编写 DLL 终极手册
- BCB 编写 DLL 终极手册
- BCB编写DLL终极手册
- Java接口和Java抽象类
- 澄清Java(接口与继承)
- NDoc简介
- 管理的智慧——留一个缺口才能容纳完美,在生活和事业中,我们都需要时留个缺口给别人。
- vc下读写注册表
- BCB编写及调用DLL
- 获取IP地址!
- 锄草第一日
- Java ResultSetDateMate 得到表结构 wpjiyan
- asp.net中通过javascript打开窗口
- 12个你必须了解 or 用到Ajax的地方
- js网页编辑器
- 新手求助
- 动态网站制作指南 jsp中文网,精典