Kirk,
The @ means that the parameter is passed by reference. So you were sending it's address (say for example 0x5234:0768) instead of it's value (0). When the argument got to the DLL C++ saw 1379141480 instead of 0. The C++ declaration would be int * or long * if it wanted an address. In Win32 integer, int and long are all 32 bit values. In the LPSTR declaration of the char arguments LP = long pointer, STR = null terminated string. So those you needed to pass as @ references instead of putting the whole string into the call stack. The way VFP handles strings though you don't have to use the @ in the declare. But I usually do because of all the C/C++ I did before picking up Xbase.
>Thanks for your help that worked perfect. After looking at their code, I had changed most of the variables to integers vice long and still received the errors. Was it the "@" in the declare that was messing it up? I hope to have to get a better understanding of where I went wrong.