Bonjour à tous, j'ai récupéré la librairie Revel sur internet (http://revel.sourceforge.net/). J'aimerais savoir si quelqu'un l'a déjà utilisée dans un des ses programmes pour qu'il m'aide à l'utiliser ?

J'ai décidé de prendre directement la version binaire pour Windows. Sur le site il est écrit :

A binary distribution of the Revel libraries for Win32 (compiled with MSVC .NET 2003) is also available, which is statically linked against xvidcore 1.0.2, so you can really just plug and play.
Donc, à partir des fichiers revel.h et revel.lib, je crée un nouveau projet sous VS C++ Express 2005... j'ajoute même un reveltest.cpp qui est sensé me faire une petite démo... et je n'arrive même pas à compiler cet exemple de base !

En effet, j'ai ces erreurs là :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Édition des liens en cours...
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _free déjà défini(e) dans LIBCMT.lib(free.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc déjà défini(e) dans LIBCMT.lib(malloc.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _realloc déjà défini(e) dans LIBCMT.lib(realloc.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __chsize déjà défini(e) dans LIBCMT.lib(chsize.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _exit déjà défini(e) dans LIBCMT.lib(crt0dat.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __strnicmp déjà défini(e) dans LIBCMT.lib(strnicmp.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _fclose déjà défini(e) dans LIBCMT.lib(fclose.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _fopen déjà défini(e) dans LIBCMT.lib(fopen.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _strncmp déjà défini(e) dans LIBCMT.lib(strncmp.obj)
MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) déjà défini(e) dans LIBCMT.lib(typinfo.obj)
MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) déjà défini(e) dans LIBCMT.lib(typinfo.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: "public: virtual __thiscall std::exception::~exception(void)" (??1exception@std@@UAE@XZ) déjà défini(e) dans LIBCMT.lib(stdexcpt.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: "public: __thiscall std::exception::exception(void)" (??0exception@std@@QAE@XZ) déjà défini(e) dans LIBCMT.lib(stdexcpt.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: "public: __thiscall std::exception::exception(class std::exception const &)" (??0exception@std@@QAE@ABV01@@Z) déjà défini(e) dans LIBCMT.lib(stdexcpt.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(char const *)" (??0bad_cast@std@@QAE@PBD@Z) déjà défini(e) dans LIBCMT.lib(stdexcpt.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __close déjà défini(e) dans LIBCMT.lib(close.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __write déjà défini(e) dans LIBCMT.lib(write.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __open déjà défini(e) dans LIBCMT.lib(open.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __lseek déjà défini(e) dans LIBCMT.lib(lseek.obj)
MSVCRT.lib(MSVCR80.dll) : error LNK2005: __read déjà défini(e) dans LIBCMT.lib(read.obj)
LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library
Je reconnais bien les fonctions de base, mais comment est-ce possible que plusieurs fichiers différents les redéfinissent ?

LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library Visual semble me donner une solution pour régler problème (il y en aura d'autres, je suis sur). Qu'est-ce que "utilisez /NODEFAULTLIB:library" veut dire ?

C'est peut-être tout bête, mais même si j'ai appris le C++ au cour de ma formation, il est vrai qu'on n'a jamais eu à utiliser des librairies existantes, c'est pourquoi je me vois confronté à un ensemble de problèmes qu'on apprend surement à régler avec l'expérience.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

A part ça, j'ai quelques interrogations :

Revel dépend de Xvid. Voici ce qui est précisé sur le site :

In order to compile Revel, you must have already compiled and installed the XviD core libraries.
Est-ce que cela signifie que si j'utilise directement revel.lib, je n'ai pas besoin de compiler moi même Xvid ? Dans ce cas, suffit-il que j'installe la dernière version du codec sur mon PC aussi simplement que si j'en avais besoin pour regarder une vidéo sur mon lecteur préféré ?

En effet, ces lignes me font peur :

Compiling Revel under Windows is not recommended for the impatient or faint of heart. To be more specific, compiling XviD under Windows is kind of a pain, and Revel requires XviD.
Et juste pour vérification que j'ai bien compris un principe de base :

"which is statically linked against xvidcore 1.0.2" >> signifie bien que lib revel.lib possède une référence sur Xvid - qui doit donc être installé par ailleurs - de la même façon qu'un programme aurait besoin d'une dll en particulier ?

Je vous remercie de bien vouloir confirmer mes suppositions, affiner ma compréhension, m'expliquer les inconnues... bref, de m'éclairer un petit peu :-)