Portál AbcLinuxu, 10. května 2025 05:31
#include "libmyxml.h"
#include <stdio.h>
int main(void) {
int ret;
Data Str;
const char *uriRead = "prikladoveXML/1.xml";
ret = DataReader(uriRead,&Str);
if(ret==0) printf("Cteni_souboru_probehlo_bez_chyb\n");
else printf("Behem_cteni_souboru_se_vyskytly_chyby\n");
return 0;
}
Má to načítat data z xml souborů. Funkce DataReader
je v mojí knihovně libmyxml.a
. V libmyml.h
je definováná struktura Data
. A teď k problému.main.c
a přeložím ho gcc -c main.c
tak se mi normálně vytvoří main.o
. Když ale soubor přejmenuju main.cpp a přeložím gcc -c main.cpp
vyhodí to hlášku:main.cpp: In function ‘int main()’:
main.cpp:10: error: ‘DataReader’ was not declared in this scope
Neměl by tohle řešit přepínač -c
?
Řešení dotazu:
Co mate v souboru libmyxml.h
?
Prepinac -c
zajisti, ze se nebude linkovat, gcc skonci praci vytvorenim objektoveho souboru. Vas problem urcite nevyresi.
libmyxml.h
je jen definice struktury Data
.
O to se právě snažím, vytvořit soubor main.o s použítím C++ - tedy když soubor přejmenuju na main.cpp nebo použiju g++.Co mate v souboru
libmyxml.h
?Prepinac
-c
zajisti, ze se nebude linkovat, gcc skonci praci vytvorenim objektoveho souboru.
gcc main.o -o ukazka -I. -I/usr/include/libxml2 -L. -lz -lm -lxml2 -lmyxml
Dokud sem nedate kompletni kod, ktery nejde zkompilovat, tak se to tezko dozvite. Napriklad tohle se prelozi:
#include <stdio.h> struct Data { int dummy; }; int DataReader(const char*, Data*); int main(void) { int ret; Data Str; const char *uriRead = "prikladoveXML/1.xml"; ret = DataReader(uriRead,&Str); if(ret==0) printf("Cteni_souboru_probehlo_bez_chyb\n"); else printf("Behem_cteni_souboru_se_vyskytly_chyby\n"); return 0; }
int DataReader(const char*, Data*);
-Wall
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.