Strings are immutable in C#, so "ref string" might not mean much, since the target would still be unchangeable. Also strings in c# are by definition Unicode, so you will likely need to define UNICODE in your c++ project. C# strings map reasonably well to BSTRs from an interop point of view. You might try making the C++ signature "Func2(10, &BSTRmystr) and match that with the stringbuilder variant odf the C# one... Absolute faith corrupts as absolutely as absolute power Eric Hoffer All that is necessary for the triumph of evil is that good men do nothing. Edmund Burke