Mike,
When I've had non-standard words to read in the past, I've usually done it (on unix platforms) with something like this:
char buffer[4] = { \000, \000, \000, \000 };
int result, nread;
nread = read(fd,buffer,3);
if ( nread > 0 ) result = *((int *)buffer);
Note that the key is explicitly asking for the number of bytes, not relying on a built-in type.
If the platform that wrote the data is different from the platform reading it, you may have to be careful to byte-swap "result" once it has the data in it.
I haven't tried the above code in OriginC, so I don't know if it would work. If not, surely you could get it to work as an external DLL (though I am not sure what the VC++ equivalent of read() is).
Good luck with this problem!
Dave