Bonjour à tous,
Je suis en train de programmer un gros projet utilisant entre autre Devil sous linux (Ubuntu 9.10 32 bits) et je voudrais porter mon projet sous windows 7 32bits. Or j'y utilise Devil d'une manière assez particulière car l'allocation et la libération de la mémoire passent par mes propres fonctions grâce à la fonction de Devil : ilSetMemory. Or sous windows, cette fonction semble faire planter mon application. J'ai fait un programme minimal pour ilustrer mon problème :
Pour compiler ce code j'utilise code::block avec mingw32.
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
23
24
25 #include <iostream> #include <IL/il.h> #include <cstdlib> using namespace std; void * _Alloc_CB(const ILsizei iSize) { return malloc(iSize); } void _Free_CB(const void * CONST_RESTRICT iBuf) { free((void *)iBuf); } int main() { ilSetMemory((mAlloc)_Alloc_CB, (mFree)_Free_CB); ilInit(); ilShutDown(); return 0; }
Le programme compile parfaitement mais lors de l'exécution, il plante dans la fonction "_Alloc_CB". Si j'enlève la ligne "ilSetMemory(..." le programme s'exécute de nouveau parfaitement. Si je met "ilInit();" avant "ilSetMemory(...", le programme plante cette fois dans "_Free_CB" (Ce qui me semble assez logique après tout).
Je précise que ce code compile et s'exécute parfaitement sous linux. J'utilise la version 1.78 de Devil (qui est la dernière version), mais j'ai essayé toutes les versions de la forme 1.7x mais ça plante toujours au même endroit, de plus il est hors de question que je j'utilise une version inférieur aux 1.7 car il y manquerait des fonctions dont j'ai besoin.
Voila, si vous avez une idée d'où mon problème peux bien venir n'hésitez pas à me le dire.
Je vous remercie d'avance.
Koubykoub.
Partager