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.
- Rejestracja:około 4 lata
- Ostatnio:ponad rok
- Postów:103
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.

- Rejestracja:ponad 19 lat
- Ostatnio:2 dni
https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-loadresource
https://cpp.hotexamples.com/examples/-/-/LoadResource/cpp-loadresource-function-examples.html



- Rejestracja:ponad 21 lat
- Ostatnio:mniej niż minuta
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.

- Rejestracja:około 4 lata
- Ostatnio:ponad rok
- Postów:103
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.

- Rejestracja:ponad 19 lat
- Ostatnio:2 dni
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?
- Nie umiesz stworzyć projektu;
- Nie umiesz otworzyć edytora;
- Nie wiesz gdzie się dodaje
resource
; - Nie znasz absolutnie C/C++;
- Masz jakieś nieudane próby;
- Rejestracja:około 4 lata
- Ostatnio:ponad rok
- Postów:103
_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?
- Nie umiesz stworzyć projektu;
- Nie umiesz otworzyć edytora;
- Nie wiesz gdzie się dodaje
resource
;- Nie znasz absolutnie C/C++;
- Masz jakieś nieudane próby;
a co ja napisalem? Nie potrafie znalexc w internecie jak zaladowac obrazek z pliku wykonywalnego do sfml

- Rejestracja:ponad 14 lat
- Ostatnio:około 23 godziny
- Postów:2098
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
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)
- Rejestracja:około 4 lata
- Ostatnio:ponad rok
- Postów:103
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
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.