Platform Invocation Services - Tools

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 (1795–1881)

    Armies, though always the supporters and tools of absolute power for the time being, are always the destroyers of it too; by frequently changing the hands in which they think proper to lodge it.
    Philip Dormer Stanhope, 4th Earl Chesterfield (1694–1773)

    At the utmost, the active-minded young man should ask of his teacher only mastery of his tools. The young man himself, the subject of education, is a certain form of energy; the object to be gained is economy of his force; the training is partly the clearing away of obstacles, partly the direct application of effort. Once acquired, the tools and models may be thrown away.
    Henry Brooks Adams (1838–1918)