DLL importieren. Fehler

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    DLL importieren. Fehler

    Tachen Community,

    Ich habe bei mir 3 Dateien, eine .dll eine .lib und eine .h
    Welche zu einer API gehören.

    Wie kann ich diese jetzt bei mir (C#) im Projekt einbinden?
    Denn wenn ich nur die .dll über Verweis hinzufügen einfügen möchte kommt ein Fehler.

    MFG
    Du kannst die DLL einbinden, indem Du dafür eine API-like Wrapper-Klasse schreibst.
    Die Deklarationen sehen dann so aus:

    C#-Quellcode

    1. using System.Runtime.InteropServices;
    2. /// <summary>
    3. /// Native methods helper class.
    4. /// </summary>
    5. internal static class NativeMethods
    6. {
    7. /// <summary>
    8. /// API declaration of the GetAsyncKeyState function
    9. /// </summary>
    10. /// <param name="key">key code to ask if pressed</param>
    11. /// <returns>information if the kea is pressed or not</returns>
    12. [DllImport("user32.dll")]
    13. public static extern short GetAsyncKeyState(int key);
    14. }
    Und die Information, die Du da reinschreiben musst, entnimmst Du der Header-Datei.
    Vielleicht postest Du sie mal, da guck ich mal rüber.
    Und:
    Gugst Du hier, auch wenn es VB ist.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    In .Net kannst du die lib beiseite lassen. extern "C" ist eine Funktion, die als C-Funktion exportiert wird. Wobei ich dir import nicht abkaufe, normalerweise ist dass ein Makro und für dich __declspec(dllexport). int ist der Rückgabetyp und für char* nimmste einfach n String (Ansi natürlich). Was char*& heißen soll kann ich dir nicht sagen, wahrscheinlich hatte der Entwickler keine Ahnung. Wo hast du die Dll denn her?

    AtomTiger schrieb:

    solcher Sachen
    Sieh Dir mal diese Funktion in meinem Tut an:

    VB.NET-Quellcode

    1. <DllImport("DLL32.dll")> _
    2. Public Shared Function SetStringAnsi(ByVal values As IntPtr) As Integer
    3. End Function
    bzw.

    C#-Quellcode

    1. [DllImport("DLL32.dll")]
    2. public static extern int SetStringAnsi(IntPtr values);
    Falls Du die C-Quellen nicht hast, musst Du den Aufruf jedes einzelnen Parameters überprüfen und ggf. experimentieren!
    Wenn Du sie hast, setz einen Haltepunkt rein und sieh Dir auf der DLL-Seite an, was da ankommt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!