请高手回答,关于BCB动态调用vc编写的DLL的函数类型转换问题
本人用vc6编了DLL,已经用vc6做测试程序调通,bcb是初学,需要用来做界面,用动态的显式链接方法(Loadlibrary。。。),不过在bcb测试时无法发通指令,不知是不是因为bcb没有CString,而出现的类型转换问题
//dll函数
bool StartListen(char* ComName)
{
}
CString ConnectTogether(int MonitorNo, int CameraNo)
{
}
//bcb代码,(.cpp)中
typedef bool (* open)(char *);
typedef LPCTSTR (* check)(int,int);
FARPROC lpFarProc; //指向dll模块中函数地址的指针
int (*lpaddit)(int,int); //自己声明的一个和dll中的函数一样功能的函数原型
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
HINSTANCE DLLInst = NULL;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool r;
open p;
void result;
DLLInst = LoadLibrary("ComServer.dll");
p = (open)GetProcAddress(DLLInst,"StartListen");
if(p!=NULL)
{
r = p("COM1");
ShowMessage("ok");
if(r)
{ lpFarProc = GetProcAddress(DLLInst,"ConnectTogether");
if(lpFarProc!=NULL)
{
lpaddit = (int(_cdecl *)(int, int))lpFarProc; //指针类型转换
result = lpaddit(1,2);
ShowMessage("connect com");
}
else
ShowMessage("not com");
}
}
else ShowMessage("Could not obtain function pointer");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
FreeLibrary(DLLInst);
}
出错提示信息是("not com"),说明StartListen命令没有得到COM的值,希望高手指点,谢谢