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:
“But lo! men have become the tools of their tools.”
—Henry David Thoreau (18171862)
“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)
“Man is a tool-using animal.... Without tools he is nothing, with tools he is all.”
—Thomas Carlyle (17951881)