Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Nutzung eines Arrays über mehrere src files

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.10.2012, 22:06 Uhr
kog



Hallo an alle!

Ich möchte in einem cpp file einem Array aus einem String Werte zuweisen, was auch soweit klappt.
Danach möchte ich in einem anderen cpp file die Inhalte des Arrays an einen Pointer übergeben, aber soweit komme ich gar nicht weil das Compilieren mit einem LNK error zwischen file 1 und file 2 abbricht.

Das header file wo das array als extern definiert ist, ist eingebunden.

file 1:

C++:
int tst_user[5];

int Fill()
{
    char variable[] = "";
    char * pch;
    int i = 0;
    
      
    printf("Enter desired Data in this style XX-XX-XX-XX-XX-XX : \n");
    scanf("%s", &variable); //user input to address of variable
    
    pch = strtok (variable, "- :");
    while (pch != NULL)
    {
        printf("%s \n",pch);  //control of splitting
        sscanf (pch, "%x", &tst_user[i]);  //filling
        pch = strtok (NULL, "- :");
        printf("array index %d = %#x \n",i, tst_user[i++]);   //control array and add 1 to index
    }

    return 0;
}
.
.
.
Fill()
.
.
.



header file:


C++:
    
extern int tst_user;



//Fehler

file 2:

C++:
    
pTest->tst[0] = tst_user[0]);




Die Fehlermeldung ist folgende:

LNK2001: unresolved external symbol "int * tst_user" (?tst_user@@3PAHA)
fatal error LNK1120: 1 unresolved externals

Ich habe schon mehrere Ansätze probiert, leider ohne Erfolg.

Der verwendete Compiler:
Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385

Erstellt wird ein Treiber(*.sys), dem aus der, der Installation aufrufenden shell ein Wert zur config übergeben werden soll.

Über jede Hilfe oder Kritik oder jeden Hinweis in die richtige Richtung wäre ich sehr dankbar.

Danke

kog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.10.2012, 16:56 Uhr
Napsta



Guten Tag kog,

Fill()

C++:
int tst_user[5];

int Fill()
{
    char *variable = (char*)malloc(32); //Speicher allozieren
    char * pch;
    int i = 0;
    
      
    printf("Enter desired Data in this style XX-XX-XX-XX-XX-XX : \n");
    scanf("%s", variable); //variable ist selber ein Zeiger
    
    pch = strtok (variable, " -:");
    while (pch != NULL)
    {
        printf("%s \n",pch);
        sscanf (pch, "%x", &tst_user[i]);
        pch = strtok (NULL, " -:");
        printf("array index %d = %#x \n",i, tst_user[i++]);
    }
    free(variable); //Speicher wieder freigeben
    return 0;
}



C++:
extern int tst_user[5];



MFG Napsta

Dieser Post wurde am 30.10.2012 um 16:56 Uhr von Napsta editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.10.2012, 17:11 Uhr
~kog
Gast


Danke Napsta

Danke für Deine Hilfe werds gleich mal übernehmen und probieren.

LG

kog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.10.2012, 16:30 Uhr
kog



Hallo an alle, Grüß Dich Napsta !

Der von Dir gepostete Code funktioniert leider auch nur genauso weit, wie der vor der Speicherreservierung. Der Linker beschwert sich ja auch über das tst_user[5] Array
und nicht über die Variable variable. (in deinem Fall Zeiger)

Die Befüllung hat ja ansich auch funktioniert, die Fehlermeldung ist für mich leider etwas unscharf, hab auch nicht so die Erfahrung damit.

das im header war ein Tippfehler von mir, richtig ist natürlich:


C++:
extern int tst_user[5];


@ Fehlermeldung:
Was heißt das in den Klammern (?tst_user@@3PAHA) eigentlich ?
Könnte mir das bitte jemand genauer erklären?

Wenn mir jemand etwas Licht ins Dunkel bringen könnte wäre ich sehr dankbar, auch jeder
Hinweis und Denkanstoß wird gerne entgegengenommen.

LG

kog

Dieser Post wurde am 31.10.2012 um 17:18 Uhr von kog editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.10.2012, 17:37 Uhr
~f.-th.
Gast


Ist schon ein paar Jahre her das ich Ähnliches geschrieben hab und das noch nicht mit dem VS von Microsoft.

Wenn du diesen Compiler am Start hast:

Zitat:
Der verwendete Compiler:
Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385



sieht das nach einem umfangreichen Projekt aus. Aber, wenn du eine c++ Quelltextdatei übersetzen willst, musst du da nicht einen anderen Compiler aus dem VS-Paket wählen?


Wie geschrieben ist Jahre her - der Resource Compiler wurde glaub damals genutzt um Resourcen-Scripte für den Linker aufzubereiten?


Aber da jeder Compiler-Anbieter seine Eigenarten hat, kann es sein das mein Beitrag nicht zutreffend ist. Um das zu klären deines VS oder schau ins MSDN.

MfG
f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: