/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Header fil include fejl
Fra : Michael Bøcker-Larse~


Dato : 29-07-01 15:21

Hej NG håber I kan hjælpe

---- util.h ----
extern void funktion();

---- util.c ----
#include "util.h"

void funktion() {
// do nothing
}

---- main.cpp ----
#include "util.c"

void main(){
funktion();
}


----------------------------------
Det er filerne der er involveret. Når jeg compiler/linker får jeg følgende
fejl:

Linking...
Test.obj : error LNK2001: unresolved external symbol "void __cdecl
funktion(void)" (?funktion@@YAXXZ)
Debug/Test.exe : fatal error LNK1120: 1 unresolved externals

Please help

Mvh
Michael Bøcker-Larsen




 
 
Mogens Hansen (29-07-2001)
Kommentar
Fra : Mogens Hansen


Dato : 29-07-01 16:53

Hej Michael,

"Michael Bøcker-Larsen" <michael@mblarsen.dk> wrote in message
news:3b641b9d$0$4669$ba624c82@nntp01.dk.telia.net...
> Hej NG håber I kan hjælpe
>
> ---- util.h ----
> extern void funktion();
>
> ---- util.c ----
> #include "util.h"
>
> void funktion() {
> // do nothing
> }
>
> ---- main.cpp ----
> #include "util.c"

Det er atypisk at includere en C fil (men ikke nødvendigvis forkert - hvad
som helst kan includere).
Normalt er det header filen man includerer.
C filen tilføjer man som oftest til build-projektet.
Det ser ud som om at du bruger Microsoft Visual C++, så du vælger "FileView"
i Workspace og højreklikker på dit projekt og vælger "Add Files to
project...".

>
> void main(){
> funktion();
> }
>
>
> ----------------------------------
> Det er filerne der er involveret. Når jeg compiler/linker får jeg følgende
> fejl:
>
> Linking...
> Test.obj : error LNK2001: unresolved external symbol "void __cdecl
> funktion(void)" (?funktion@@YAXXZ)
> Debug/Test.exe : fatal error LNK1120: 1 unresolved externals

Når jeg laver de filer du har angivet ovenfor, compilerer og linker det uden
problemer i Microsoft Visual C++ V6.0 (selvom det _ikke_ burde: main _skal_
returnere en int).
Hvis du har skrevet #include "util.h" i main.cpp, kan jeg forstå at du får
den nævnte fejl.

Jeg gætter på at dit problem stammer fra et større projekt.
Dit problem er hvordan du får C og C++ til at arbejde sammen.
C++ dekorerer funktionsnavne med ekstra information, som siger noget om
parametrenes typer.
Læg mærke til at din funktion hedder "?funktion@@YAXXZ".
Det kaldes name mangling.

Du kan bruge preprocessor macroen "__cplusplus" til at afgøre om compileren
er i færd med at oversætte en C eller en C++ fil.

Prøv med følgende filer:
------ util.h --------
#ifndef UTIL_H_GUARD
#define UTIL_H_GUARD

#ifdef __cplusplus
extern "C" {
#endif //#ifdef __cplusplus

void funktion(void);

#ifdef __cplusplus
} // end of exter "C"
#endif //#ifdef __cplusplus


#endif //#ifndef UTIL_H_GUARD


------ util.c --------
#include "util.h"

void funktion(void)
{
// do nothing
}

------ main.cpp ------

#include "util.h"

int main(void)
{
funktion();
return 0;
}

Det virker for mig, og burde også på en hvilken som helst anstændig C++
compiler.


Venlig hilsen

Mogens Hansen



Michael Bøcker-Larse~ (30-07-2001)
Kommentar
Fra : Michael Bøcker-Larse~


Dato : 30-07-01 11:06

Hej Mogens tak for dit indlæg man jeg fandt ud af hvad jeg gjorde forket.

Rigtig nok manglede jeg "C" tingen efter extern, men jeg skulle også lige
rename util.c til util.cpp så virkede det.

Det var ikke et forsøg på at få c og c++ til at virke sammen


"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:9k1bb0$ok7$1@news.cybercity.dk...
> Hej Michael,
>
> "Michael Bøcker-Larsen" <michael@mblarsen.dk> wrote in message
> news:3b641b9d$0$4669$ba624c82@nntp01.dk.telia.net...
> > Hej NG håber I kan hjælpe
> >
> > ---- util.h ----
> > extern void funktion();
> >
> > ---- util.c ----
> > #include "util.h"
> >
> > void funktion() {
> > // do nothing
> > }
> >
> > ---- main.cpp ----
> > #include "util.c"
>
> Det er atypisk at includere en C fil (men ikke nødvendigvis forkert - hvad
> som helst kan includere).
> Normalt er det header filen man includerer.
> C filen tilføjer man som oftest til build-projektet.
> Det ser ud som om at du bruger Microsoft Visual C++, så du vælger
"FileView"
> i Workspace og højreklikker på dit projekt og vælger "Add Files to
> project...".
>
> >
> > void main(){
> > funktion();
> > }
> >
> >
> > ----------------------------------
> > Det er filerne der er involveret. Når jeg compiler/linker får jeg
følgende
> > fejl:
> >
> > Linking...
> > Test.obj : error LNK2001: unresolved external symbol "void __cdecl
> > funktion(void)" (?funktion@@YAXXZ)
> > Debug/Test.exe : fatal error LNK1120: 1 unresolved externals
>
> Når jeg laver de filer du har angivet ovenfor, compilerer og linker det
uden
> problemer i Microsoft Visual C++ V6.0 (selvom det _ikke_ burde: main
_skal_
> returnere en int).
> Hvis du har skrevet #include "util.h" i main.cpp, kan jeg forstå at du får
> den nævnte fejl.
>
> Jeg gætter på at dit problem stammer fra et større projekt.
> Dit problem er hvordan du får C og C++ til at arbejde sammen.
> C++ dekorerer funktionsnavne med ekstra information, som siger noget om
> parametrenes typer.
> Læg mærke til at din funktion hedder "?funktion@@YAXXZ".
> Det kaldes name mangling.
>
> Du kan bruge preprocessor macroen "__cplusplus" til at afgøre om
compileren
> er i færd med at oversætte en C eller en C++ fil.
>
> Prøv med følgende filer:
> ------ util.h --------
> #ifndef UTIL_H_GUARD
> #define UTIL_H_GUARD
>
> #ifdef __cplusplus
> extern "C" {
> #endif //#ifdef __cplusplus
>
> void funktion(void);
>
> #ifdef __cplusplus
> } // end of exter "C"
> #endif //#ifdef __cplusplus
>
>
> #endif //#ifndef UTIL_H_GUARD
>
>
> ------ util.c --------
> #include "util.h"
>
> void funktion(void)
> {
> // do nothing
> }
>
> ------ main.cpp ------
>
> #include "util.h"
>
> int main(void)
> {
> funktion();
> return 0;
> }
>
> Det virker for mig, og burde også på en hvilken som helst anstændig C++
> compiler.
>
>
> Venlig hilsen
>
> Mogens Hansen
>
>



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste