I had a similar problem with a dll developed in Delphi, and using the same in VC++. First you will have to find out the equivalent data types in C# for all the parameters used in the dll. Most of the data types will be the same except for the structure. Declare a similar structure in C#, create an object of the same, and then pass the address of the object as a long value( which would get type casted automatically in the dll ). Hope this would solve your problem. :) "A robust program is resistant to errors -- it either works correctly, or it does not work at all; whereas a fault tolerant program must actually recover from errors."