Funktion erwartet "falsche" Parameter



  • Hallo,

    Gegeben sei:

    extern bool parse_command_line(int argc, char *argv[],
    		const char** ppdb, const char** ppserver, const char** ppuser,
    		const char** pppass, const char* extra_parms = "");
    
    int main(int argc, char *argv[])
        {
    	    const char* db = 0, *server = 0, *user = 0, *pass="";
    		const char*);
    
    	    if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
    		    return 1;
    	    }
    

    und

    const char* db = 0, *server = 0, *user = 0, *pass = "";
        if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
            return 1;
    

    Der Compiler meckert hierbei:

    gg.cpp:(.text+0x65): undefined reference to `parse_command_line(int, char**, char const**, char const**, char const**, char const**, char const*)'
    

    Ich finde den fehler nicht, vermute jedoch dass es daran liegt dass kein siebter paramater übergeben wird. Der Code stammt jedoch von:

    http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#simple

    Wo liegt bitte der Fehler und wie ist er zu beheben?


  • Mod

    Der Linker kann keine Funktionsdefinition finden. Zwei Möglichkeiten:

    a) Es ist keine Definition vorhanden (du zeigst in deinem Code keine).

    b) Du hast zwar eine Definition, aber in einer Datei die dem Linker nicht angegeben wurde.



  • extern bool parse_command_line(int argc, char *argv[],
            const char** ppdb, const char** ppserver, const char** ppuser,
            const char** pppass, const char* extra_parms = "");
    

    Hier, nein?

    Eigentlich möchte ich nur das erwähnte Beispiel verwenden:
    http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#simple

    In der nächsten Funktion tritt allerdings ein ähnliches Problem auf...



  • wabbul schrieb:

    extern bool parse_command_line(int argc, char *argv[],
            const char** ppdb, const char** ppserver, const char** ppuser,
            const char** pppass, const char* extra_parms = "");
    

    Hier, nein?

    Das ist eine (extern)-Deklaration. Die macht nur den Namen + Signatur bekannt.


Anmelden zum Antworten