先用VC++写dll: --------------------------------------------- 代码: extern "C"{ int __declspec (dllexport)add (int a,int b) { return a+b; } } BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } 生成RELEASE版本dll文件和lib文件(这里我们在BCB中不用VC++的头文件,lib没有什么用处) dll文件名:vcplusplusdll.dll ----------------------------------------------------------------------- 打开BCB,在默认新建的工程中放三个编辑框,用BCB默认添加的3个成员名:TEdit1,TEdit2,TEdit3.再添加一个按钮,更改caption为:OK。 在默认的TForm1类声明头文件中的public部分或private部分加入3个成员变量,int a,b,c。 为TEdit1,TEdit2 2个控件添加onchange响应函数,命名为onchange1,onchange2。 相关代码: void __fastcall TForm1::change1(TObject *Sender) { a=StrToInt(Edit1->Text); } void __fastcall TForm1::change2(TObject *Sender) { b=StrToInt(Edit2->Text); } 在Unit1.cpp文件中,TForm1的类函数的实现部分前面,添加一下全局变量: HINSTANCE handle; //装载dll的模块句柄 FARPROC lpFarProc; //指向dll模块中函数地址的指针 int (*lpaddit)(int,int); //自己声明的一个和dll中的函数一样功能的函数原型 下面双击刚才添加的“OK”,BCB生成响应函数:在函数体内加入: //load library handle=LoadLibrary("vcplusplusdll.dll"); //get ptr point to the "ADD" function 's address lpFarProc = GetProcAddress(handle,"add"); lpaddit = (int(_cdecl *)(int, int))lpFarProc; //指针类型转换 c=lpaddit(a,b); //使用addit函数 FreeLibrary(handle); AnsiString str; str=IntToStr(c); Edit3->Text=str; 把VC++中的得到的dll拷贝到刚才bcb的工程的目录下,运行程序。通过~ 
|