Tools
There are a number of tools which are designed to aid in the production of P/Invoke signatures.
Writing a utility application that would import C++ header files and native DLL files and produce an interface assembly automatically turns out to be quite difficult. The main problem with producing such an importer/exporter for P/Invoke signatures is the ambiguity of some C++ function call parameter types.
Brad Abrams has this to say on the subject: The P/Invoke Problem.
The problem lies with C++ functions like the following:
__declspec(dllexport) void MyFunction(char *params);What type should we use for the parameter params in our P/Invoke signature ? This could be either a C++ null terminated string, or could be a char array or could be an output char parameter. So should we use string, StringBuilder, char or ref char ?
Regardless of this issue, there are a few tools available to make the production of P/Invoke signatures simpler.
One of the tools listed below, C#/.NET P/Invoke Interop SDK has actually successfully resolved this issue by implementing multiple overrides of the same C++ method in .NET world, developers can then pick the correct one to make the call.
Read more about this topic: Platform Invocation Services
Famous quotes containing the word tools:
“Man is a tool-using animal.... Without tools he is nothing, with tools he is all.”
—Thomas Carlyle (17951881)
“There is a great satisfaction in building good tools for other people to use.”
—Freeman Dyson (b. 1923)
“No man is born into the world, whose work
Is not born with him; there is always work,
And tools to work withal, for those who will:
And blessèd are the horny hands of toil!”
—James Russell Lowell (18191891)