Skompilowane pliki zasobów

Skompilowane pliki zasobów
P3
  • Rejestracja:około 4 lata
  • Ostatnio:ponad rok
  • Postów:103
0

Cześć
Pisze lekkie aplikację dlatego chciałbym aby cały program był jednym plikiem. Bibliotekę SFML jest zawarta w pliku kompilowanym przez statyczność, chciałbym aby kilka obrazów też znajdowało się w tym pliku. Używam visual studio 2022, który kompiluje zasoby do pliku .exe. Nie moge nigdzie znaleźć jak załadować te pliki graficzne, w sfml jest metoda "loadFromMemory" która chyba za to odpowiada ale nic nie moge znaleźć w necie.

edytowany 1x, ostatnio: Riddle
Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 15 godzin
  • Postów:1605
2

Pisze lekkie aplikację dlatego chciałbym aby cały program był jednym plikiem.

Trochę non sequitur, ale…

To zależy głównie od linkera, którego używasz. Znalazłem na szybko coś takiego w sieci; nie wiem, czy Ci to pomoże — sam nie używam Visual Studio.

edytowany 1x, ostatnio: Althorion
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 dni
1

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
Althorion
Wygląda na pierwszy rzut oka jak C#, nie C++. Coś przeoczyłem (mam gorączkę, nie myślę trzeźwo), czy zły link Ci się wkleił?
_13th_Dragon
Racja - zmieniłem
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:mniej niż minuta
2

Da się do exeka dołączyć dowolne pliki graficzne jako zasoby, potem wczytać za pomocą LoadResource() i zdekodować czym tam masz.

Jest z tym mały problem, ostatnio jak to robiłem Visual Studio z uporem maniaka zamieniało wszystkie obrazki na BMP przy próbie ich otwarcia w zasobach z poziomu IDE.
Trzeba pilnować by raz dodanego np. png już nie dotykać i od czasu do czasu kontrolować czy są to nadal png bo z bmp ci exek bardzo spuchnie.

edytowany 1x, ostatnio: Azarien
P3
wcześniej już coś próbowałem robić w winapi, więc malutką wiedze na temat ladowania obrazkow z zasobow. Tylko jak typ danych typu hbitmap przerzutować do obrazka sfml, przenoszenie kazdego pixela ?
Azarien
Olej hbitmap. Traktuj wrzucany obrazek jako nieprzezroczyste dane binarne. Jak już je wczytasz do pamięci to masz to loadFromMemory o którym wspomniałeś.
P3
  • Rejestracja:około 4 lata
  • Ostatnio:ponad rok
  • Postów:103
0
Azarien napisał(a):

Da się do exeka dołączyć dowolne pliki graficzne jako zasoby, potem wczytać za pomocą LoadResource() i zdekodować czym tam masz.

Jest z tym mały problem, ostatnio jak to robiłem Visual Studio z uporem maniaka zamieniało wszystkie obrazki na BMP przy próbie ich otwarcia w zasobach z poziomu IDE.
Trzeba pilnować by raz dodanego np. png już nie dotykać i od czasu do czasu kontrolować czy są to nadal png bo z bmp ci exek bardzo spuchnie.

nie potrafie tego zrobić siedze już 3 dzień xD i już mnie głowa rozbolała, Ludzie pomóżcie.

Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 23 godziny
  • Postów:2098
2

A co zrobiłeś ?
Nie wiesz jak umieścić plik w zasobach?
Pliku nie widac w EXE
NIe wiesz jak wczytac plik z zasobów ?

Koniecznie musi być w zasobach czy alternatywne metody są akceptowalne ?

Widziales ten watek : ?


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 dni
1
plugan300 napisał(a):

nie potrafie tego zrobić siedze już 3 dzień xD i już mnie głowa rozbolała, Ludzie pomóżcie.

Co znaczy nie potrafisz?

  1. Nie umiesz stworzyć projektu;
  2. Nie umiesz otworzyć edytora;
  3. Nie wiesz gdzie się dodaje resource;
  4. Nie znasz absolutnie C/C++;
  5. Masz jakieś nieudane próby;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
P3
  • Rejestracja:około 4 lata
  • Ostatnio:ponad rok
  • Postów:103
0
_13th_Dragon napisał(a):
plugan300 napisał(a):

nie potrafie tego zrobić siedze już 3 dzień xD i już mnie głowa rozbolała, Ludzie pomóżcie.

Co znaczy nie potrafisz?

  1. Nie umiesz stworzyć projektu;
  2. Nie umiesz otworzyć edytora;
  3. Nie wiesz gdzie się dodaje resource;
  4. Nie znasz absolutnie C/C++;
  5. Masz jakieś nieudane próby;

a co ja napisalem? Nie potrafie znalexc w internecie jak zaladowac obrazek z pliku wykonywalnego do sfml

Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 23 godziny
  • Postów:2098
2

niepotrzebnie zawężasz poszukiwania do sfml, to taka sama biblioteka jak tysiące innych to naprawdę nie jest to istotne dla problemu

Sam znalazłeś w dokumentacji

Kopiuj
bool Image::loadFromMemory(const void* data, std::size_t size)

czyli już 95% problemy za tobą , teraz tylko musisz uzupełnić parametry (wskażnik i rozmiar)

w fazie przejsciowej sprawdz czy jak wczytasz przykładowy plik do std::vector<uint8> czy wszystko zadziała będziesz miał 97%

Teraz tylko pozostaje jak umieścić w EXE plik i wydłubać wskaźnik

(opcja1) Tutaj byles?
https://learn.microsoft.com/en-us/cpp/windows/working-with-resource-files?view=msvc-170
odpowedzi @_13th_Dragon @Azarien

(opcja2)
Zamien plik na hex https://tomeko.net/online_tools/file_to_hex.php?lang=en i zrób z tego tablice

(opcja 3)
rozwiazania z poprzedniego mojego postu (ale to prawie to samo co 2 tylko troche inaczej)


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
P3
  • Rejestracja:około 4 lata
  • Ostatnio:ponad rok
  • Postów:103
0
Adamek Adam napisał(a):

niepotrzebnie zawężasz poszukiwania do sfml, to taka sama biblioteka jak tysiące innych to naprawdę nie jest to istotne dla problemu

Sam znalazłeś w dokumentacji

Kopiuj
bool Image::loadFromMemory(const void* data, std::size_t size)

czyli już 95% problemy za tobą , teraz tylko musisz uzupełnić parametry (wskażnik i rozmiar)

w fazie przejsciowej sprawdz czy jak wczytasz przykładowy plik do std::vector<uint8> czy wszystko zadziała będziesz miał 97%

Teraz tylko pozostaje jak umieścić w EXE plik i wydłubać wskaźnik

(opcja1) Tutaj byles?
https://learn.microsoft.com/en-us/cpp/windows/working-with-resource-files?view=msvc-170
odpowedzi @_13th_Dragon @Azarien

(opcja2)
Zamien plik na hex https://tomeko.net/online_tools/file_to_hex.php?lang=en i zrób z tego tablice

(opcja 3)
rozwiazania z poprzedniego mojego postu (ale to prawie to samo co 2 tylko troche inaczej)

W końcu coś działa przekonwertowanie bmp na hexe ale troche trwa zanim visual studio to odpala, jesli chodzi o kompilacje to dziala szybko. Jednak będę próbować zrobić to tak zeby był wykorzystywany zasob kompilowany z rc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.