Portál AbcLinuxu, 3. prosince 2025 15:18
#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
-czajisti, ze se nebude linkovat, gcc skonci praci vytvorenim objektoveho souboru.
gcc main.o -o ukazka -I. -I/usr/include/libxml2 -L. -lz -lm -lxml2 -lmyxmlDokud 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.