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:
“Think of the tools in a tool-box: there is a hammer, pliers, a saw, a screwdriver, a rule, a glue-pot, nails and screws.The function of words are as diverse as the functions of these objects.”
—Ludwig Wittgenstein (18891951)
“Machinery is aggressive. The weaver becomes a web, the machinist a machine. If you do not use the tools, they use you. All tools are in one sense edge-tools, and dangerous.”
—Ralph Waldo Emerson (18031882)
“Justice and truth are too such subtle points that our tools are too blunt to touch them accurately.”
—Blaise Pascal (16231662)