Archief - [PROG]g++ c files in een c++ project

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

fretn

Legacy Member
ik probeer minizip mee te compileren (met g++) in een c++ project maar dit lukt niet omdat de functies van minizip er zo uitzien:

Code:
#include <stdio.h>
int main(argc,argv)
        int argc;
        char *argv[];
{

        printf("joe\n");
        return 0;
}

als ik compileer met volgende commandline:

fretn@leiah:~$ g++ blah.c -o blah
blah.c:2: error: ‘argc’ was not declared in this scope
blah.c:2: error: ‘argv’ was not declared in this scope
blah.c:2: error: initializer expression list treated as compound expression
blah.c:3: error: expected ‘,’ or ‘;’ before ‘int’
blah.c:4: error: storage size of ‘argv’ isn't known
blah.c:5: error: expected unqualified-id before ‘{’ token
blah.c:4: error: storage size of ‘argv’ isn’t known

compileren met gcc ipv g++ werkt wel

is er een manier om dit via g++ (één of andere switch meegeven) werkende te krijgen ?
(al die functie headers herschrijven neem ik liever niet als optie)

en hoe heet trouwens deze manier van werken ? (dit zou mijn gegoegel wat makkelijker maken)

S3cT0r

Legacy Member
Kunt ge dat niet compileren met gcc en als library includen (een .lib file, zoals bij SDL, OpenGL, Winsock, gzip, ...)? Dit zou normaalgezien moeten lukken aangezien C gewoon undecorated function names gebruikt, maar misschien moet er toch nog iets mee gebeuren. Enfin, ik ben niet 100% zeker en heb het nog nooit geprobeerd, maar veel succes en meld het als je de oplossing gevonden hebt :)

fretn

Legacy Member
k&r interfaces heet die manier van werken dus (lang leve wikipedia ! :) )
als een statische lib lijkt het ook niet te werken

Tyfius

Legacy Member
K&R interface is afaik niet toegelaten in C++, vandaar uw probleem.
De beste oplossing is volgens mij om minizip naar een .so (of .dll file onder windows) te compilen en vervolgens te die gaan gebruiken.

wlibaers

Legacy Member
Normaal kan je die gewoon samen linken. Wel alle C functies in een voor C++ bruikbare manier in de header zetten (extern "C").

fretn

Legacy Member
:woohoo:

'tis gelukt met linken in een static lib
gewoon de minizip files in de zlib dir zetten, toevoegen aan de makefile, zlib hercompileren, en dan :cool: !

thanks voor info !!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan