Zethyr Skrevet 2. desember 2003 Del Skrevet 2. desember 2003 (endret) Jeg driver egentlig og pusler med et lite fint prosjekt med en CGI-gjestebok laget i C++, men støtte på et par grusomme feil... P.G.A dette lagde jeg en liten kode som bruker de samme elementene, og jada; feilen kommer der også: #include <iostream> #include "cgic.h" using namespace std; int cgiMain(){ cgiHeaderContentType("text/html"); cout<<"<HTML>\n"; cout<<"<HEAD><TITLE>HEH...</TITLE></HEAD>\n"; cout<<"<BODY>\n"; cout<<"Heiåhå!!!!:-)\n"; cout<<"</BODY>\n"; cout<<"</HTML>\n"; return 0; } denne burde jo være grei å kompilere, men den får akkurat samme feilen som i gjesteboka: fatal error LNK1254: metadata for symbol '?cgiMain@@$$J0YAHXZ' inconsistent with COFF symbol table Jeg har prøvd å inkludere cgic.c i stedet for cgic.h, og får bare flere merkeligere feil. I gjesteboka får jeg feilen i cgiHeaderContentType også, men hvis jeg fjerner den kommer feilen i cgiMain... Jeg har satt opp filer i vanlig c til å kompileres som det også... Jeg bruker VS.NET, men har fått samme feil i DevCpp(bloodshed). Feilen skjer under linking... Endret 2. desember 2003 av Zethyr Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/
daysleper Skrevet 2. desember 2003 Del Skrevet 2. desember 2003 Jeg kjenner ikke så godt til feilmeldingene under VC. Kunne du gitt den tilsvarende meldingen du får i DevCpp (MinGW)? Sånn med det første vil jeg tippe at du må linke med et eller annet cgi-bibliotek du har lastet ned. Altså du får feilen fordi du ikke linker med dette biblioteket. Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1437898
daysleper Skrevet 2. desember 2003 Del Skrevet 2. desember 2003 Hvilket bibliotek er det forresten? Hjemmeside? Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1437987
kjetil7 Skrevet 3. desember 2003 Del Skrevet 3. desember 2003 (endret) Her er det sannsynligvis noe tull med blanding av C og C++ og bruken av extern keyword. Mitt forslag er å rename C filene (går ut fra at det er et C bibliotek) fra *.c til *.cpp. Filene blir da kompilert med C++ kompilatoren og ikke C komplatoren. Tipper problemene dine forsvinner da En annen løsning er å gå gjennom header filen(e) (cgic.h) og legge til: #ifdef __cplusplus extern "C" XXXXXXX #else extern XXXXXXX #endif ...for alle forekomster av extern. Samtidig må du sannsynligvis skrive cgiMain slik: extern "C" int cgiMain() { //..... } Endret 3. desember 2003 av kjetil7 Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1438952
Zethyr Skrevet 3. desember 2003 Forfatter Del Skrevet 3. desember 2003 Jeg er på skolen nå, men skal prøve når jeg kommer hjem... det er en ganske lik feilmelding i DevCpp... filene fulgte med i PC-Pro for en stund siden, men det skulle ligge på boutell.com... Jeg kan jo prøve å se om det er noen biblioteker der, men det fulgte ikke med noen i PCPro... I PCPro hadde de kompilert kode med bare å si fra at c-filene skulle kompileres med c-kompilatoren... jeg skal prøve å rename filene også når jeg kommer hjem... kan noen av dere bare si fra om det går bra å kompilere det uten å modifisere koden og filnavenene i noen andre kompilatorer?? takker for alle svar... Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1439801
daysleper Skrevet 3. desember 2003 Del Skrevet 3. desember 2003 Kanskje et C++ lib er det du er ute etter: http://www.gnu.org/software/cgicc/cgicc.html ..i stedet for et C-lib. Det kan jeg i hvertfall selv bekrefte at fungerer utmerket under C++. (ser du bruker cout, som er C++) Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1440610
kjetil7 Skrevet 3. desember 2003 Del Skrevet 3. desember 2003 (endret) Etter å ha sett på biblioteket som ligger på http://www.boutell.com/ kan jeg bekrefte at det er blanding av C++ og C som er problemet. Det som skjer er at main() som du finner i cgic.c kaller cgiMain(). I ditt tilfelle kaller da C funksjonen main() C++ funksjonen cgiMain(). Dette vil ikke fungere hvis du ikke deklarerer cgiMain() som extern "C". Samtdig må du legge til extern "C" i #ifdef __cplusplus blokker slik jeg beskrev i min forrige post. Her er et par eksempel fra headeren: #ifdef __cplusplus extern "C" void cgiHeaderLocation(char *redirectUrl); extern "C" void cgiHeaderStatus(int status, char *statusMessage); extern "C" void cgiHeaderContentType(char *mimeType); #else extern void cgiHeaderLocation(char *redirectUrl); extern void cgiHeaderStatus(int status, char *statusMessage); extern void cgiHeaderContentType(char *mimeType); #endif /* ........ */ #ifdef __cplusplus extern "C" int cgiMain(); #else extern int cgiMain(); #endif ..men den enkleste løsningen er som sagt å gi alle C filene cpp extension. Endret 3. desember 2003 av kjetil7 Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1441233
Zethyr Skrevet 3. desember 2003 Forfatter Del Skrevet 3. desember 2003 Bare ved å rename filene fungerte det ikke, så jeg tar en titt på det c++ biblioteket, tror jeg... har ikke testet den lille fila, men bare gjestebok-tingen.. ang. cout har jeg prøvd med flere c-varianter... Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1442131
kjetil7 Skrevet 4. desember 2003 Del Skrevet 4. desember 2003 Vel, jeg har klart å reprodusere feilen din og bruker filene fra http://www.boutell.com/cgic/ som er de samme som du bruker. Å gi cgic.c nytt navn til cgic.cpp løser problemene. Det skal det gjøre. Jeg har fått begge løsningene som jeg skisserte til å fungere uten noen som helst problemer. Du kan prøve å kjøre 'clean' og 'rebuild' (eller bruke c++ biblioteket som kanskje er den beste løsningen ) Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1443634
daysleper Skrevet 4. desember 2003 Del Skrevet 4. desember 2003 Jørs; er folk våkne ennå/så tidlig? Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1443649
kjetil7 Skrevet 4. desember 2003 Del Skrevet 4. desember 2003 (endret) Jepp måtte tidlig opp i dag Slo deg med en time Endret 4. desember 2003 av kjetil7 Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1444169
Zethyr Skrevet 4. desember 2003 Forfatter Del Skrevet 4. desember 2003 wehay!! clean og rebuild så ut til å funke... takk for tipset, jeg ante ikke om det....... Lenke til kommentar https://www.diskusjon.no/topic/176266-coff-symbol-table/#findComment-1444843
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå