.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下可以用
不知为何

解决方案 »

  1.   

    WriteCard很正常,什么也没有做,而且,传入的参数,什么也没有做。
    ReadCard作了很多工作,尤其对于传入的字符串缓冲区,也作了处理,印象中,VB调用字符串的参数,好像要做一定的处理吧。
    有点忘了。
      

  2.   

    WriteCard省掉代码
    ReadCard用不了你在头文件中定义的方式
    给个列子
      

  3.   

    用vc自带的depends工具查看一下函数名导出的是否正常
    对于给delphi和vb等程序调用的dll,最好在工程里加一个def文件声明导出函数