DLL erstellen



  • Hi Leute,

    ich muss aus einem Textcode eine *.DLL Datei erstellen, habe aber keinen Anhaltspunkt wie ich das am besten angehen soll.
    Vielleicht könnte mir ja jemand den Code so erweitern das ein Compiler mir eine DLL daraus erzeugt. Ich poste mal den Code, glaube auch nicht dass das ein großes Problem für einen versierten Programmierer darstellt, oder irre ich mich da? Habe auch bis jetzt schon mehrere Stunden gesucht und keinen Weg gefunden...:-(
    Hier ist mal der Code....

    #include <windows.h>
    #include <math.h>
    #include <string.h>

    int __declspec(dllexport) APIENTRY UserGrinDefinition(double *data);
    int __declspec(dllexport) APIENTRY UserParamNames(char *data);

    BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
    {
    return TRUE;
    }

    int __declspec(dllexport) APIENTRY UserGrinDefinition(double *data)
    {
    double r, r2, index, N, A, B, x, y, dx, dy;

    N = data[10];
    A = data[11];
    B = data[12];
    dx= data[13];
    dy= data[14];
    x = data[1];
    y = data[2];

    if (dx > 0 && dy > 0)
    {
    if (x > +0.5*dx) x -= dx*(double)ceil(+(x - 0.5dx)/dx);
    if (x < -0.5*dx) x += dx*(double)ceil(-(x + 0.5
    dx)/dx);
    if (y > +0.5*dy) y -= dy*(double)ceil(+(y - 0.5dy)/dy);
    if (y < -0.5*dy) y += dy*(double)ceil(-(y + 0.5
    dy)/dy);
    }

    r2 = x*x + y*y;
    r = sqrt(r2);

    index = N + A*r2 + B*r;
    data[6] = index;

    if (index < 1.0)
    {
    return -1;
    }

    data[7] = 2.0*A*xindex;
    data[8] = 2.0*A*y
    index;
    if (B != 0.0 && r > 0.0)
    {
    data[7] += B*x*index/r;
    data[8] += B*y*index/r;
    }
    data[9] = 0.0;
    return 0;
    }

    int __declspec(dllexport) APIENTRY UserParamNames(char *data)
    {
    int i;
    i = (int) data[0];
    strcpy(data,"");
    if (i == 1) strcpy(data,"N0");
    if (i == 2) strcpy(data,"Nr2");
    if (i == 3) strcpy(data,"Nr1");
    if (i == 4) strcpy(data,"Array dx");
    if (i == 5) strcpy(data,"Array dy");
    return 0;
    }

    Es wäre Supernett wann das jemand hinbekommen würde...



  • 1. Mit VS ein neues Win32 Console Projekt erstellen und dabei DLL und nicht Console wählen (im Wizard).
    2. Den Code dort reinkopieren und builden.

    Simon



  • Vielen Dank Simon, 👍

    werd es gleich mal probieren...



  • Habe das jetzt so gemacht wie Simon gesagt hatte und den Code reinkopiert und versucht zu builden. Nur Leider klappt das builden nicht und es kommt zu folgende Fehlermeldung:

    error LNK2005: _DllMain@12 ist bereits in DLL Test.obj definiert

    und

    fatal error LNK1169: Mindesten ein mehrfach definiertes Symbol gefunden

    Wenn ich diesen Teil rausnehme funktioniert das mit dem builden einwandfrei....

    BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
    {
    return TRUE;
    }

    weiß vielleicht jmeand wo der hier der Fehler liegt?



  • weiß vielleicht jmeand wo der hier der Fehler liegt?

    Ja. Der Linker sagt dir dass DllMain 2x definiert ist.
    Lösche es an einem Ort raus (hat ja sowiso kein Code drin).

    Simon


Anmelden zum Antworten