bcb6升级2010问题
我原先工程调用动态库的代码编译不过去了。具体如下
HINSTANCE h1;
HANDLE __stdcall (*Open_Com)(int port, int baud, int data, int parity, int stop);
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AnsiString s = GetCurrentDir() + "\\CJ201api.dll";
h1 = LoadLibrary(s.c_str());
if( h1 == NULL )
{
Memo1->Lines->Add("Load CJ201api.dll failed");
return;
}
else
{
Memo1->Lines->Add("Load CJ201api.dll successed!");
}
(void *)Open_Com = (void *)GetProcAddress(h1,"Open_Com");
}
(void *)Open_Com = (void *)GetProcAddress(h1,"Open_Com"); 这语句报错,[BCC32 Error] Unit1.cpp(53): E2277 Lvalue required
[解决办法]
可以编译过去,这是我的完整代码
- C/C++ code
void __fastcall TForm8::Button1Click(TObject *Sender){HINSTANCE h1;typedef HANDLE __stdcall myOpen_Com (int port, int baud, int data, int parity, int stop);myOpen_Com * Open_Com;AnsiString s = GetCurrentDir() + "\\CJ201api.dll"; h1 = LoadLibrary(s.c_str()); if( h1 == NULL ) {// Memo1->Lines->Add("Load CJ201api.dll failed"); return; } else {// Memo1->Lines->Add("Load CJ201api.dll successed!"); } Open_Com = (myOpen_Com *)GetProcAddress(h1,"Open_Com"); HANDLE dev; dev = Open_Com( 1,9600,8,0,0 );}