ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1137
1137
EMPFEHLEN
-
Hallo Leutz
Hab mal wieder ein Problem diesesmal mit dem Linker. Ich soll ein Prog schreiben mit dem ich ASCII werte in Strings (und umgekehrt) umwandeln kann. Programmiert schön und gut aber der Linker bringt mir folgende Fehlermeldung:
cdc.obj : error LNK2001: Nichtaufgeloestes externes Symbol "char __cdecl decodieren(int,char)" (?decodieren@@YADHD@Z)
cdc.obj : error LNK2001: Nichtaufgeloestes externes Symbol "void __cdecl codieren(char,int)" (?codieren@@YAXDH@Z)
Debug/cdc.exe : fatal error LNK1120: 2 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
und hier mein Code dazu:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void codieren(char,int);
char decodieren(int,char);
void main()
{
int zahl=0;
int iwahl=0;
char text[80];
int itxt[80];
char ctxt[80];
printf("Wollen sie einen text in ASCII(1) oder ASCII-werte in einen Text(2) umwandeln: \n");
printf("Bitte waehlen Sie 1 oder 2:\n");
scanf("%d",&iwahl);
switch(iwahl)
{
case 1:
printf("Bitte geben Sie einen text ein:\n");
scanf("%s",&text);
codieren(text[80],itxt[80]);
printf("Ihr text als ASCII wert: %d \n",itxt);
break;
case 2:
printf("Bitte geben Sie einen ASCII wert ein:\n");
scanf("%d",&zahl);
decodieren(zahl,ctxt[80]);
printf("Ihre ASCII wert als text: %s \n",ctxt);
break;
default:
printf("Koennen Sie nicht lesen!\n");
}
}
void codieren(char text[],int itxt[])
{
//printf ("text aus der subroutine %s \n",text);
int i =0;
for (i=0;text[i];i++)
itxt[i] = text[i];
//itxt[i]=0;
}
void decodieren(int zahl[], char ctxt[])
{
int i=0;
for(i=0;zahl[i];i++)
ctxt[i] = zahl[i];
}
Kann mir da vielleicht jemand helfen
-
Der Prototyp muss der Definition gleichen:
(Du hast die Klammern vergessenCode :1 2 3 4
void codieren(char,int); // IST FALSCH char decodieren(int,char); // IST AUCH FALSCH void codieren(char[],int[]); // IST RICHTIG char decodieren(int[],char[]); // IST AUCH RICHTIG
)
Und dann meckert der Compiler: (BCB)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Error E2034 test.cpp 30: Cannot convert 'int' to 'char *' in function main() Error E2342 test.cpp 30: Type mismatch in parameter 'text' (wanted 'char *', got 'char') in function main() Error E2034 test.cpp 30: Cannot convert 'int' to 'int *' in function main() Error E2342 test.cpp 30: Type mismatch in parameter 'itxt' (wanted 'int *', got 'int') in function main() Error E2034 test.cpp 37: Cannot convert 'int' to 'int *' in function main() Error E2342 test.cpp 37: Type mismatch in parameter 'zahl' (wanted 'int *', got 'int') in function main() Error E2034 test.cpp 37: Cannot convert 'int' to 'char *' in function main() Error E2342 test.cpp 37: Type mismatch in parameter 'ctext' (wanted 'char *', go t 'char') in function main() Error E2356 test.cpp 60: Type mismatch in redeclaration of 'decodieren(int *,cha r *)' Error E2344 test.cpp 9: Earlier declaration of 'decodieren(int *,char *)' Warning W8070 test.cpp 64: Function should return a value in function decodieren (int *,char *) *** 10 errors in Compile ***
Ich würde das ganze eher so schreiben:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
void main() { int zahl=0; int iwahl=0; char text; printf("Wollen sie einen text in ASCII(1) oder ASCII-werte in einen Text(2) umwandeln: \n"); printf("Bitte waehlen Sie 1 oder 2:\n"); scanf("%d",&iwahl); switch(iwahl) { case 1: printf("Bitte geben Sie einen text ein:\n"); scanf("%c",&text); printf("Ihr text als ASCII wert: %d \n",text); break; case 2: printf("Bitte geben Sie einen ASCII wert ein:\n"); scanf("%d",&zahl); printf("Ihre ASCII wert als text: %c \n", zahl); break; default: printf("Koennen Sie nicht lesen!\n"); } }Geändert von Aiju (19.10.04 um 16:13 Uhr)
-
Hi Aiju
Nachdem ich deine vorgeschlagenen Änderungen gemacht habe bringt mir der Compiler jetzt folgende Fehler:
E:\Schule\Datenverarbeitung\C\MSDev98\MyProjects\codedecode\cdc.cpp(29) : error C2664: 'codieren' : Konvertierung des Parameters 1 von 'char' in 'char []' nicht moeglich
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
E:\Schule\Datenverarbeitung\C\MSDev98\MyProjects\codedecode\cdc.cpp(36) : error C2664: 'decodieren' : Konvertierung des Parameters 1 von 'int' in 'int []' nicht moeglich
Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
E:\Schule\Datenverarbeitung\C\MSDev98\MyProjects\codedecode\cdc.cpp(68) : error C2556: 'void __cdecl decodieren(int [],char [])' : Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'char __cdecl decodieren(int [],char [])'
E:\Schule\Datenverarbeitung\C\MSDev98\MyProjects\codedecode\cdc.cpp(8) : Siehe Deklaration von 'decodieren'
E:\Schule\Datenverarbeitung\C\MSDev98\MyProjects\codedecode\cdc.cpp(68) : error C2371: 'decodieren' : Neudefinition; unterschiedliche Basistypen
E:\Schule\Datenverarbeitung\C\MSDev98\MyProjects\codedecode\cdc.cpp(8) : Siehe Deklaration von 'decodieren'
-
ich kann mit den meldungen (null) anfangen

Ich benutz nämlich KEIN microsoft(windows ist ne ausnahme)!

Test mal das:
Code :1 2 3 4 5 6 7 8
// Codieren char c; scanf("%d", &c); printf("Wert %d als Zeichen: %c\n", c, c); // Decodieren int c; scanf("%c", &c); printf("Zeichen %c als Wert: %d\n", c, c);Geändert von Aiju (19.10.04 um 16:22 Uhr)
-
19.10.04 16:44 #5
- Registriert seit
- Aug 2004
- Beiträge
- 213
LOL!
Zitat von Aiju
Du benutz kein "Microsoft" aber Windows, das ist ne Ausnahme.
Geil , danke für den Lacher am Abend
"Nun, diese taktischen Atomwaffen, das ist ja eine bloße Fortsetzung der Artillerie."
"Nehmen Sie die Menschen, wie sie sind, andere gibt's nicht."
"Lieber das halbe Deutschland ganz als das ganze Deutschland halb."
"Ist es nicht schrecklich, dass der menschlichen Klugheit so enge Grenzen gesetzt sind und der menschlichen Dummheit überhaupt keine?"
- Konrad Adenauer
sprachtherapie göttingen
-
@Aiju
Danke für deine Hilfe aber wir solen das Prog mit funktionen schreiben. Das deine Lösung des Problems auch funktioniert steht auser Frage. So ist ja auch der einfachste Weg. Ich denke das Problem liegt an meinen Funktionsdefinitionen. Da muß ich nochmal ne nacht drüber schlafen dan wird des schon.
Trotzdem Danke für deine Hilfe.
mfg
masda
-
nur code: (verstehen und nicht abtippen
) (mit deinen funks)
Code :1 2 3 4 5 6 7
char c[1]; int i[1]; int x; scanf("%d", &x); i[0] = x; codieren(c, i); printf("%s", c);Geändert von Aiju (19.10.04 um 19:14 Uhr)
Ähnliche Themen
-
Linker
Von nosrep123 im Forum VisualStudio & MFCAntworten: 6Letzter Beitrag: 30.06.10, 09:31 -
Linker Probleme
Von MedRamBO im Forum C/C++Antworten: 4Letzter Beitrag: 23.07.08, 07:50 -
Linker Error
Von Sek77 im Forum C/C++Antworten: 1Letzter Beitrag: 02.04.08, 18:36 -
Linker ld woher?
Von sacridex im Forum Linux & UnixAntworten: 1Letzter Beitrag: 10.04.05, 04:40 -
Linker Problem Dev C++
Von Dudadida im Forum C/C++Antworten: 1Letzter Beitrag: 01.07.04, 10:48





Zitieren
Login






