#include #include typedef int (*USCS4CB)( char t[21], char r[12], char b[66] ); int main(int argc, char *argv[]) { HINSTANCE hinstLib; USCS4CB fp; char track[21]; char route[12]; char bar[66]; int rc; if( argc != 3 ) { fprintf( stderr, "usage: %s trackcode(20) routecode(11)\n", argv[0] ); exit( -3 ); } if( hinstLib = LoadLibrary( TEXT("usps4cb") ) ){ if( !( fp = (USCS4CB) GetProcAddress( hinstLib, "USPS4CB" ) ) ) { fprintf( stderr, "Couldn't obtain proc addr for USCS4CB(); rc:%x\n", GetLastError() ); exit( -5 ); } } else { fprintf( stderr, "Couldn't load USCS4CB.dll; rc %x\n", GetLastError() ); exit( -4 ); } if( strlen( argv[ 1 ] ) != 20 ) { fprintf( stderr, "Param 1 (Track code) not 20 digits\n" ); exit( -1 ); } memcpy( track, argv[1], 20 ); track[20] = '\0'; if( strlen( argv[ 2 ] ) != 11 ) { fprintf( stderr, "Param 2 (Route code) not 11 digits\n" ); exit( -2 ); } memcpy( route, argv[2], 11 ); route[11] = '\0'; memset( bar, 0, sizeof( bar) ); if( rc = (fp)( track, route, bar ) ) { fprintf( stderr, "USPS4CB failed with rc:%d\n", rc ); exit( rc ); } printf( bar ); return 0; } /* C:\test>cl 663116.c Microsoft (R) 32-bit C/C++ Standard Compiler Version 13.00.9466 for 80x86 Copyright (C) Microsoft Corporation 1984-2001. All rights reserved. 663116.c Microsoft (R) Incremental Linker Version 7.00.9466 Copyright (C) Microsoft Corporation. All rights reserved. /out:663116.exe 663116.obj C:\test>.\663116 usage: .\663116 trackcode(20) routecode(11) C:\test>.\663116 3070202120200000001 27203643012 Param 1 (Track code) not 20 digits C:\test>.\663116 30702021202000000001 2720364302 Param 2 (Route code) not 11 digits C:\test>.\663116 30702021202000000001 27203643012 ATTDAATFADDDTDDTFTFFADADFDTDDAFTATTAAATAAFTFADFDTTTFADAFDDATDDTFT */