Fehlermeldung, mit der ich nichts anfangen kann



  • Hallo,

    bei mir kommt diese Fehlermeldung:

    E:/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../libmingw32.a(main.o):main.c:(.text+0x104): undefined reference to `_WinMain@16'

    Allerdings weiß ich nicht, was das bedeutet.
    Kann es was mit der main.cpp bzw dll.h zu tun haben?

    ----main.cpp----
    #include <iostream>
    #include <windows.h>
    #include <stdio.h>
    #include <string>
    
    #define DLL_EXPORT
    #include "dll.h"
    
    extern "C"
    {
    
        DECLDIR int Zaehler1_alter_Stand (
        int nType, int nState, int nFldIdx,
        LPSTR lpszMskName, int nSizeMskName,
        LPSTR lpszBlobFile, int nSizeBlobFile,
        LPSTR lpszFldData, int nSizeFldData,
        LPSTR lpszErrText, int nSizeErrText
        )
        {
    
            char *str;
            char fd[200];
            char pfad[200]="IGOR\\";
            str = "_zaehlerstand_1_alt.txt";
            char acUserName[100];
    
            DWORD nUserName = sizeof(acUserName);
            if (GetUserName(acUserName, &nUserName))
    
            {
    
                strcat(acUserName,str);
                strcpy (fd,acUserName);
                strcat(pfad,fd);
    
                FILE *cs;
                cs=fopen(pfad,"a+");
    
                if (cs==NULL)
                {system ("md IGOR");}
    
                if (cs!=NULL)
                {
                    fclose(cs);
                }
    
                remove(pfad);
    
                FILE *dt;
                dt=fopen(pfad,"a+");
    
                if (dt!=NULL)
                {
                    fprintf(dt,"%s", lpszFldData );
                    fclose (dt);
                }
                else
                {
                    MessageBox (
                    NULL, "FC2",
                    "EASY CAPTURE - USEREXIT", MB_OK|MB_ICONSTOP
                    );
                }
            }
            else
            {
                MessageBox (
                NULL, "FC1",
                "EASY CAPTURE - USEREXIT", MB_OK|MB_ICONSTOP
                );
            }
    
            return 0;
        }
    }
    
    ----dll.h----
    #ifndef _DLLTUT_DLL_H_
    #define _DLLTUT_DLL_H_
    
    // DLL EX - / IM - port halt
    #if defined DLL_EXPORT
    #define DECLDIR __declspec(dllexport)
    #else
    #define DECLDIR __declspec(dllimport)
    #endif
    
    // Prototyp
    extern "C"
    {
    
    DECLDIR int Zaehler1_alter_Stand
    (int nType, int nState, int nFldIdx,
    LPSTR lpszMskName, int nSizeMskName,
    LPSTR lpszBlobFile, int nSizeBlobFile,
    LPSTR lpszFldData, int nSizeFldData,
    LPSTR lpszErrText, int nSizeErrText
    );
    
    }
    
    #endif
    


  • Sieht so aus, als wolltest du eine DLL erstellen, versuchst aber, eine EXE zu erstellen...



  • Die Fehlermeldung bedeutet, dass der Compiler versucht eine Windows Anwendung zu erstellen, findet aber die Einstiegsfunktion "WinMain" (http://msdn.microsoft.com/en-us/library/ms633559%28VS.85%29.aspx) nicht.
    So wie es aussieht musst du in den Projekteigenschaften auf DLL umstellen für das was du willst 🙂

    Lg,
    Thomas



  • Außerdem fehlt die DllMain



  • Hi,

    -insane- schrieb:

    Außerdem fehlt die DllMain

    MSDN schrieb:

    DllMain Callback Function
    An optional entry point into a dynamic-link library (DLL).

    😉
    Peace C0de4Fun



  • Jetzt Compiliert er mir die main.dll als C++-Datei und nicht als DLL, weil immer diese Meldung kommt (wenn ich auf File->New-Build target ... gehe):

    A build target with this name already exists

    Dabei habe ich keine entsprechende DLL gefunden. Wie kann ich das unter Code::Blocks ändern?



  • sulpsulpc (Gast) schrieb:

    Jetzt Compiliert er mir die main.dll als C++-Datei und nicht als DLL, weil immer diese Meldung kommt (wenn ich auf File->New-Build target ... gehe):

    A build target with this name already exists

    Dabei habe ich keine entsprechende DLL gefunden. Wie kann ich das unter Code::Blocks ändern?

    Ich empfehle dir DLL-Projekte unter VC++ zu kompilieren.


Anmelden zum Antworten