Is there a recommended way to wrap a native c++ library by c++ cli?
-
What do you mean? I think that entirely depends on what you are trying to accomplish. So. What are you trying to accomplish? – BastiBen Nov 27 '10 at 13:18
-
2You can use native C++ library in C++/cli without 'wrapping' it. – Zach Saw Nov 27 '10 at 13:27
-
You can't, no good way to pinvoke the constructor and destructor calls. – Hans Passant Nov 27 '10 at 16:34
1 Answers
Not sure if one size fits all, but yeah, it is largely a mechanical process. Your ref class wrapper should declare a private member that's a pointer to your native C++ class. Create the instance in the constructor. You'll need a destructor and a finalizer to delete that instance again.
Then for each function in the native C++ class you write a managed version of it. That's almost always a one-to-one call, you simply call the corresponding native method and let C++ Interop convert the arguments. Sometimes you have to write a bit of glue code to convert a managed argument to the native version of it, particularly if your native method uses 8-bit char* or structure arguments.
You'll find that standard pattern in code in my answer here. I also should mention SWIG, a tool that can automate it. Not sure how good it is, never used it myself.

- 1
- 1

- 922,412
- 146
- 1,693
- 2,536