圣者
精华
|
战斗力 鹅
|
回帖 0
注册时间 2013-7-22
|
本帖最后由 frosta 于 2024-6-18 21:18 编辑
没用过CFree,
第二个问题,debug和release的主要区别是是否保留debug信息和优化区别,如果没有debug需求的话release更小也更快
第一个问题GPT是这么说的
将一个EXE程序与其资源(如JPEG图片和MP3音效)打包成一个独立的可执行文件,可以使用以下方法:
方法一:使用资源文件(Resource File)
你可以将图片和音效作为资源嵌入到EXE文件中。这需要使用资源脚本(.rc文件)和一些额外的工具。以下是具体步骤:
1. 编写资源脚本文件(.rc)
创建一个资源脚本文件(例如 resources.rc),内容如下:
rc
Copy code
IDR_JPG1 JPG "image1.jpg"
IDR_JPG2 JPG "image2.jpg"
IDR_MP31 MP3 "sound1.mp3"
IDR_MP32 MP3 "sound2.mp3"
2. 在C++代码中加载资源
在你的C++代码中,使用WinAPI函数从资源中加载图片和音频。例如:
cpp
Copy code
#include <windows.h>
#include <mmsystem.h>
HBITMAP LoadBitmapFromResource(int resourceID) {
HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(resourceID), L"JPG");
HGLOBAL hLoadedResource = LoadResource(NULL, hResource);
void* pResourceData = LockResource(hLoadedResource);
DWORD resourceSize = SizeofResource(NULL, hResource);
HGLOBAL hBuffer = GlobalAlloc(GMEM_MOVEABLE, resourceSize);
void* pBuffer = GlobalLock(hBuffer);
CopyMemory(pBuffer, pResourceData, resourceSize);
IStream* pStream = NULL;
CreateStreamOnHGlobal(hBuffer, TRUE, &pStream);
IPicture* pPicture = NULL;
OleLoadPicture(pStream, resourceSize, FALSE, IID_IPicture, (LPVOID*)&pPicture);
HBITMAP hBitmap;
pPicture->get_Handle((OLE_HANDLE*)&hBitmap);
return hBitmap;
}
void PlaySoundFromResource(int resourceID) {
HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(resourceID), L"MP3");
HGLOBAL hLoadedResource = LoadResource(NULL, hResource);
void* pResourceData = LockResource(hLoadedResource);
DWORD resourceSize = SizeofResource(NULL, hResource);
HGLOBAL hBuffer = GlobalAlloc(GMEM_MOVEABLE, resourceSize);
void* pBuffer = GlobalLock(hBuffer);
CopyMemory(pBuffer, pResourceData, resourceSize);
mciSendString(L"open \"MP3_BUFFER\" type waveaudio alias sound", NULL, 0, NULL);
mciSendString(L"play sound", NULL, 0, NULL);
GlobalUnlock(hBuffer);
GlobalFree(hBuffer);
}
3. 将资源文件编译进EXE
在CFree中,将资源文件添加到你的项目中,然后在编译选项中指定资源文件。
|
|