c ++ - Uopløst eksternt symbol '*' refereret i funktion \_main

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er en linux-bruger, og jeg har ikke meget erfaring med programmering under Windows, så jeg trykker på det er et problem med Visual Studio, som jeg skal bruge, eller sådan noget ...


Jeg har rigtig simpel kode sådan:


myProgram.cpp


...
#include "rideList.h"
...
int main() {
   ...
   rideListMain();
   ...
}


rideList.h


...
void rideListMain();
...


rideList.c


void rideListMain() {
   // some code here...
}


Faktisk er der yderligere 4 filer og lignende funktioner som rideListMain () og kompilatorens output er


LNK2019 unresolved external symbol "void \_\_cdecl rideListMain(void)" (?rideListMain@@YAXXZ) referenced in function \_main





Løsning


Omdøber * .cpp til * .c løst problemet.

Bedste reference


Du 'inkluderer genoptagelsesfilen en gang i en .cpp-fil og mangler således navnet som forventet ved standard C ++-implementeringer og indbefatter derefter den samme header-fil i en .c-fil, når du faktisk definerer din klasse og dermed definerer den med navnet unmangled .


Som linkeren fortæller dig meget klart, blev ?rideListMain@@YAXXZ aldrig defineret.



  Jeg trykker på det er et problem med Visual Studio



Nej, det er et problem med din forståelse af C og C ++ begge. extern "C" vil erklære typenavnet ubemærket i en .cpp-enhed, hvis det er det du ønsker.