l'executable n'est pas une win32 valide
bonjour, pouvez vous me dire ce qui ne va pas a la fin de mon code ?
Code:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #include <iostream>
#include <stdlib.h>
#include <fstream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
HINSTANCE hinst = (HINSTANCE) GetModuleHandle(NULL);
HRSRC resImg;
HRSRC resExe;
HGLOBAL global;
LPVOID ptrImg;
LPVOID ptrExe;
DWORD res_len_img, file_len_img;
DWORD res_len_exe, file_len_exe;
DWORD err;
resImg = FindResource(hinst, "MonImage", "RT_BITMAP");
if (!resImg) return (1);
resExe = FindResource(hinst, "MonExe", "ID_EXE");
if (!resExe) return (1);
global = LoadResource(hinst, resImg);
if (!global) return (1);
ptrImg = LockResource(global);
if (!ptrImg) return (1);
global = LoadResource(hinst, resExe);
if (!global) return (1);
ptrExe = LockResource(global);
if (!ptrExe) return (1);
res_len_img = SizeofResource(hinst, resImg);
file_len_img = *((DWORD *) (((char *) ptrImg) +2));
if (file_len_img > res_len_img) return (1);
res_len_exe = SizeofResource(hinst, resExe);
file_len_exe = *((DWORD *) (((char *) ptrExe) +2));
if (file_len_exe > res_len_exe) return (1);
ofstream osImg("P:\\Dev-Cpp\\My_exe6\\image_res.bmp", ios::binary);
osImg.write((char *) ptrImg, file_len_img);
ofstream osExe("P:\\Dev-Cpp\\My_exe6\\exe_res.exe", ios::binary);
osExe.write((char *) ptrExe, file_len_exe);
osExe.close();
return 0;
} |
Une fois que l'executable et l'image de mon fichier ressource s'est bien crée dans le repertoire P:\Dev-Cpp\My_exe6, quand je clique sur l'image, elle est bien copiée, mais quand je clique sur l'executable, je recoit un message d'erreur comme quoi "exe_res.exe n'est pas une application win32 valide".
Je crois que c'est due à la ligne :
Code:
ofstream osExe("P:\\Dev-Cpp\\My_exe6\\exe_res.exe", ios::binary);
Faut il mettre ios::binary pour un executable ? sinon, d'ou viendrai l'erreur ?
Voici mon fichier ressource .rc:
Code:
1 2
| MonImage RT_BITMAP "x.bmp"
MonExe ID_EXE "Projet3.exe" |
Il est evident que mon executable initiale, "Projet3.exe" fonctionne
Merci de votre aide