I want to invoke the following C++ function (exported by a DLL) from C#:
void createVm( const jace::VmLoader& loader, const jace::OptionList& options, bool ignoreUnrecognized = true );
I’ve found documentation for marshaling primitives from C++ to C# but I’m not sure how to handle reference-types or non-pritmive types such as VmLoader or OptionList (both of which are classes). I’m trying to wrap a C++ API with a C# layer, delegating to the underlying C++ code for the actual method implementation.
Any ideas?
AFAIK, PInvoking into a function with C++ constructs is not a supported operation. You could probably get it to work but I think you’ll find problems.
What is supported is writing a simple C wrapper function which calls into your C++ function. PInvoke into the wrapper function instead and that will do the trick.