.h
__declspec(dllexport) int WINAPI WriteCard(int ComPort,int RoomNo,int FloorNo,int BuildingNo,long int CardNo,LPSTR StartDate,LPSTR EndDate);__declspec(dllexport) int WINAPI ReadCard(int ComPort,LPSTR RoomNo,LPSTR FloorNo,LPSTR BuildingNo,LPSTR CardNo,LPSTR StartDate,LPSTR EndDate);.cpp__declspec(dllexport) int WINAPI WriteCard(int ComPort,int RoomNo,int FloorNo,int BuildingNo,long int CardNo,LPSTR StartDate,LPSTR EndDate)
{ try
{
return 0;
}
catch (CSerialException* pEx)
{
pEx->Delete();
return 1;
}}__declspec(dllexport) int WINAPI ReadCard(int ComPort,LPSTR RoomNo,LPSTR FloorNo,LPSTR BuildingNo,LPSTR CardNo,LPSTR StartDate,LPSTR EndDate)
{
try
{
sprintf(RoomNo,"%04d",(sBuf[4] & 0xff) *0x100+ (sBuf[5] & 0xFF));
sprintf(FloorNo,"%02d",sBuf[6] & 0xff );
sprintf(BuildingNo,"%02d",sBuf[7] & 0xff );
sprintf(CardNo,"%08d",(sBuf[11] & 0xff) * 0x10000+ (sBuf[12] & 0xFF) * 0x100+(sBuf[13] & 0xFF));
sprintf(StartDate,"%04d%02d%02d%02d%02d",(sBuf[14] & 0xff)+2000,sBuf[15] & 0xFF,sBuf[16] & 0xFF,sBuf[17] & 0xFF,sBuf[18] & 0xFF);
sprintf(EndDate,"%04d%02d%02d%02d%02d",(sBuf[19] & 0xff)+2000,sBuf[20] & 0xFF,sBuf[21] & 0xFF,sBuf[22] & 0xFF,sBuf[23] & 0xFF); return 0;
}
catch (CSerialException* pEx)
{
pEx->Delete();
return 1;
}
}
此DLL用VC做
ReadCard(在VC,PB下可以用,delphi vb下不能用
WriteCard在VC,PB,VB,delphi下可以用
不知为何
__declspec(dllexport) int WINAPI WriteCard(int ComPort,int RoomNo,int FloorNo,int BuildingNo,long int CardNo,LPSTR StartDate,LPSTR EndDate);__declspec(dllexport) int WINAPI ReadCard(int ComPort,LPSTR RoomNo,LPSTR FloorNo,LPSTR BuildingNo,LPSTR CardNo,LPSTR StartDate,LPSTR EndDate);.cpp__declspec(dllexport) int WINAPI WriteCard(int ComPort,int RoomNo,int FloorNo,int BuildingNo,long int CardNo,LPSTR StartDate,LPSTR EndDate)
{ try
{
return 0;
}
catch (CSerialException* pEx)
{
pEx->Delete();
return 1;
}}__declspec(dllexport) int WINAPI ReadCard(int ComPort,LPSTR RoomNo,LPSTR FloorNo,LPSTR BuildingNo,LPSTR CardNo,LPSTR StartDate,LPSTR EndDate)
{
try
{
sprintf(RoomNo,"%04d",(sBuf[4] & 0xff) *0x100+ (sBuf[5] & 0xFF));
sprintf(FloorNo,"%02d",sBuf[6] & 0xff );
sprintf(BuildingNo,"%02d",sBuf[7] & 0xff );
sprintf(CardNo,"%08d",(sBuf[11] & 0xff) * 0x10000+ (sBuf[12] & 0xFF) * 0x100+(sBuf[13] & 0xFF));
sprintf(StartDate,"%04d%02d%02d%02d%02d",(sBuf[14] & 0xff)+2000,sBuf[15] & 0xFF,sBuf[16] & 0xFF,sBuf[17] & 0xFF,sBuf[18] & 0xFF);
sprintf(EndDate,"%04d%02d%02d%02d%02d",(sBuf[19] & 0xff)+2000,sBuf[20] & 0xFF,sBuf[21] & 0xFF,sBuf[22] & 0xFF,sBuf[23] & 0xFF); return 0;
}
catch (CSerialException* pEx)
{
pEx->Delete();
return 1;
}
}
此DLL用VC做
ReadCard(在VC,PB下可以用,delphi vb下不能用
WriteCard在VC,PB,VB,delphi下可以用
不知为何
ReadCard作了很多工作,尤其对于传入的字符串缓冲区,也作了处理,印象中,VB调用字符串的参数,好像要做一定的处理吧。
有点忘了。
ReadCard用不了你在头文件中定义的方式
给个列子
对于给delphi和vb等程序调用的dll,最好在工程里加一个def文件声明导出函数