begin process at 2012 05 28 19:06:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Compiler un programme écrit en C++ utilisant une bibliothèque C. Erreurs...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Compiler un programme écrit en C++ utilisant une bibliothèque C. Erreurs...

dimanche 26 septembre 2010 à 14:08:22 | Compiler un programme écrit en C++ utilisant une bibliothèque C. Erreurs...

Virus721

Bonjour tout le monde ! :)

Voila j'essaye de me coder un petit jeu avec la bibliothèque SDL 1.2 et l'aide du site du zéro.
J'essaye autant que possible d'écrire le programme en C++ (je préfère), mais ca me cause pas mal de problèmes pour compiler !
Pour compiler j'utilise l'IDE code::blocks avec le compilateur mingw (sous Windows 7).

Je ne sais pas trop comment faire pour placer les fichiers quand on utilise une bilbiothèque. J'ai suivi la méthode du site du zéro : dans le dossier racine de l'IDE, créer un sous dossier SDL 1.2 a l'intérieur duquel on place les dossiers lib et include contenant respectivement les fichiers .a et .h, puis "linker" les .a au projet depuis l'IDE.

Le problème c'est que quand je crée un nouveau projet de type SDL et que je fais cette manip, tout marche niquel a partir du moment ou je ne rajoute pas de C++ dans le code !
Par exemple voila mon main.cpp :

#include <stdlib.h>
#include <stdio.h>
#include <SDL.h>
#include <SDL_image.h>

#include "constants.h"
#include "positions.h"

using namespace nsBTConstants;
using namespace nsPositions;

namespace
{
typedef int choice_t;

enum {MENU_PLAY, MENU_OPTIONS, MENU_ABOUT, MENU_QUIT};

void runSplash () throw (std::string)
{
SDL_Surface * splash1 = IMG_Load($IMAGES + "splash1.jpg");
for (int i = 0; i <= 256; i += 8)
{
SDL_FillRect(background, NULL, COLOR_BLACK);
SDL_SetAlpha(splash1, SDL_SRCALPHA, i);
SDL_BlitSurface(splash1, NULL, screen, &origin);
SDL_Flip(screen);
SDL_Delay(33);
// 33 times
}
SDL_FreeSurface(splash1);

} // runSplash()

choice_t runMainMenu () throw (std::string)
{
// ToDo

} // runMainmenu()

void runOptionsMenu () throw (std::string)
{
// ToDo

} // runOptionsMenu()

void runAboutMenu () throw (std::string)
{
// ToDo

} // runAboutMenu()

void runGame () throw (std::string)
{
// ToDo

} // runGame()

void runBT () throw (std::string)
{
SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER);

SDL_MW_SetIcon (IMG_Load ($ICONS + "captionIcon.jpg"), NULL);
SDL_MW_SetCaption ("Backflip Theory", NULL);

SDL_Surface * screen
= SDL_SetVideoMode (WINWIDTH, WINHEIGHT, COLDEPTH,
SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_Surface * background
= SDL_CreateRGBSurface (SDL_HWSURFACE, WINWIDTH, WINHEIGHT,
COLDEPTH, 0, 0, 0, 0);

::runSplash(); // throw (std::string)

switch ( ::runMainMenu() ) // throw (std::string)
{
case MENU_PLAY:
::runGame();
break;
case MENU_OPTIONS:
::runOptionsMenu();
break;
case MENU_ABOUT:
::runAboutMenu();
break;
}

SDL_FreeSurface(background);
SDL_FreeSurface(screen);

SDL_Quit();

} // runBT()

} // namespace

int main ( int argc, char * argv [])
{
try { ::runBT(); }

catch (std::string & errMsg)
{
std::cerr << errMsg << std::endl;
return EXIT_FAILURE;
}
catch (...)
{
std::cerr << "Unknown error !" << std::endl;
return EXIT_FAILURE;
}

return EXIT_SUCCESS;

} // main()

/* MAIN.CPP */



Et a la copilation il me sort des trucs du genre :
'std::string' has not been declared...
J'ai essayé en rajoutant string.h, cstring, using namespace std, mais rien a faire...

Alors j'ai essayé de créer un projet vide, j'ai linké les .a de la SDL, et la c'est encore mieux il ne reconnait même plus les truc issus de la SDL et du C++ !

Que dois-je faire ?
Faut-il que j'indique au compilateur (gcc je crois) que mon code est en C++ ? Si oui comment ?

Merci d'avance !
lundi 27 septembre 2010 à 06:51:25 | Re : Compiler un programme écrit en C++ utilisant une bibliothèque C. Erreurs...

Lucky92

Salut,

Pour utiliser les std::string de la bibliothèque standard du C++, il faut mettre :
Code C/C++ :
#include <string>


Pour info, <string.h> est une bibliothèque du C, et <cstring> est un alias de <string.h>.

@++
lundi 27 septembre 2010 à 17:59:56 | Re : Compiler un programme écrit en C++ utilisant une bibliothèque C. Erreurs...

Virus721

Merci pour ta réponse ca marche ! :)
En revanche ca n'explique pas pourquoi il me dit cout, cint, cerr etc... not member of std
Mais bon c'est pas grave un ami m'a installé la SDL sous Linux et ca a l'air de compiler comme il faut avec g++
Merci encore ^^


Cette discussion est classée dans : string, include, sdl, std, throw


Répondre à ce message

Sujets en rapport avec ce message

Probleme EDL (VC++7) [ par vecchio56 ] Bonjour J'ai deux problèmes d'edition de liens: Dialog.obj : error LNK2001: symbole externe non résolu "public: void __thiscall std::_String_base::_X pb conversion CString string pour affichage ds combobox [ par phenix6942 ] bonjour à tousje realise un projet mfc dans lequel j utilise plusieurs boites de dialogue.dans une de ces boites je souhaite afficher des string dans Set transform C++ [ par ffenforce10 ] Bonjour, Voilà, j'ai un petit problème avec la fonction transform pour appliquer un foncteur... Mon code complilait lorsque j'utilisait un vecteur, m La class string [ par jderf ] Je suis débutant et je teste la class string. Voici un code tous simple, mais y'a un probleme de conversion à la compil que je ne comprend pas. Les er probléme de linker "SDL" [ par yoshiv ] Bonjour, bonsoir. J'ai un probléme avec un exercice (morpion en SDL) [u]mon system[/u]: vista. visual c++ express 2008. Le code ou il y a le probléme Etendre std::string(char *) pour utiliser nos references de char[] a l'interne [ par ebeaumier ] Bonjour,Je dois appeler une API externe qui ne prend que des "const string &" et nous utilisons a l'interne des char[].Est-il possible d'étendre la cl Passage d'un String dans une DLL C++ [ par Argile92 ] Bonjour à tous.J'aimerai pouvoir accéder à un fichier texte via une DLL.Je suis dans Excel, avec l'adresse où se trouve mon fichier texte que j'aimera Testé dll c++ [ par wislam2007 ] Salut mon dll que je veux testé est : Header [code=cpp] /* verify that the version is high enough to compile this file*/ #ifndef __REQUIRED_RPCNDR_H_ Problème au linkage [ par TorTukiTu ] Bonjour, je poste aujourd'hui car j'ai passé la nuit sur le problème qui suit: (Je tourne sous ubuntu linux, la compilation a lieu avec g++)J'ai un co Probleme avec la librairie sdl et code::blocks [ par BencoAndCo ] Bonjour, J'ai un problème avec la lib sdl et code::blocks quand je compile le prog suivant : #include #include #include int main(int argc, ch


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales