动态调用dll的问题?
特招 2004-07-22 09:19:42 我的dll 是这样编写的 dll名称为 Project2.dll
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#pragma argsused
extern "C" __declspec(dllexport) __stdcall int zhuanHuan(int a);
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
return 1;
}
extern "C" __declspec(dllexport) __stdcall int zhuanHuan(int a)
{
int b;
b=a+1;
return b;
}
//---------动态调用dll的程序-------------------
在Edit1里输入数字,点击button1,调用Dll,把结果输入到Edit2中
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = StrToInt(Edit1->Text);
HINSTANCE ins;
ins = LoadLibrary("Project2.dll");
if (ins == NULL)
{
throw "can't load library!";
}
else
{
FARPROC zhuanHuan;
zhuanHuan = (int (__stdcall*)()) GetProcAddress(ins,"zhuanHuan");
if (zhuanHuan == NULL)
{
FreeLibrary(ins);
throw "can't get address!";
}
else //执行到这里都没问题
{
//在这个地方怎么使用dll中的函数zhuanHuan(int a)
//typedef int (*a) (int *);
//a ai = (a)zhuanHuan;
//ai(i);
//zhuanHuan = (int)zhuanHuan;
Edit2->Text = "s";//IntToStr(ai(i));
}
}
if (!FreeLibrary(ins))
{
throw "can't Free!";
}
}
帮忙指点一下