Problem mit Bibliothek



  • Erstmal ein Hallo an das Forum!

    Mein Problem ist folgendes: Ich muss im Studium für Info ein Programm schreiben, das einen Text per Caeser-Chiffre verschlüsselt. Soweit kein Problem, das Programm läuft ohne Probleme. Nun müssen wir aber die Funktion für das verschlüsseln des Textes in eine statische Bibliothek auslagern. Und das will einfach nicht klappen! 😡
    Ich habe ein zusätzliches Includeverzeichnis angelegt und dem Linker ein zusätzliches Bibliotheksverzeichnis angegeben, in dem die erstellte lib ist.
    Trotzdem bekomme ich folgende Fehler:

    "Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_encrypt" in Funktion "_main"."

    "Fehler 2 error LNK1120: 1 nicht aufgelöste Externe"

    Hier mal mein Code:

    Hauptprogramm:

    #include <stdio.h>
    #include <string.h>
    #include <caeser.h>
    int main(int argc, char *argv[]) {
    
    	enum { zeichenanzahl = 1024 };
    	int itextlaenge = 0, iverschiebung = 0;
    	char cintext[zeichenanzahl], couttext[zeichenanzahl];
    
    		printf("Bitte Verschiebung eingeben:\n");
    		scanf("%d", &iverschiebung);
    		while (getchar() != '\n');
    		printf("Bitte Klartext eingeben: \n");
    		fgets(cintext, zeichenanzahl, stdin);
    		strcpy(couttext, cintext);
    		itextlaenge = strlen(cintext);
    
    		encrypt(couttext, itextlaenge, iverschiebung);
    
    		printf("Verschluesselter Text: %s", couttext);
    
    	getchar();
    	return 0;
    
    }
    

    Headerdatei caeser.h:

    int encrypt(char couttext[], int itextlaenge, int iverschiebung);
    

    Funktion caeser.c:

    #include "caeser.h"
    
    int encrypt(char couttext[], int itextlaenge, int iverschiebung)
    {
    	int i = 0;
    
    	for (i = 0; i < itextlaenge - 1; i++) {
    		couttext[i] += iverschiebung % 256;
    	}
    	return 0;
    }
    

    ich wäre wirklich sehr dankbar, wenn mir jemand helfen könnte.

    Gruß, Stefan



  • Hast du auch schon die Bibliothek erzeugt?
    (Wie das gemacht wird, hängt vom Compiler, Entwicklungsumgebung und Betriebssystem ab.)
    Hast du die Bibliothek auch in deinem Projekt-/makefile angegeben?
    (Wie das gemacht wird, hängt vom Compiler, Entwicklungsumgebung und Betriebssystem ab.)

    Zeile 28 (printf mit %s) wird bei dem verschlusseltem Text nicht funktionieren, wenn du alle Zeichen codierst. Bei Caeser sin das eigentlich nur die Buchstaben.
    Zumindest solltest du die 0 davon ausnehmen.



  • Hat sich erledigt! 😃
    Ich habe irgendwie die falsche Bibliothek erwischt. 🙄

    Trotzdem danke!


Anmelden zum Antworten