我正在开发vs2012中的win32 c ++项目。 我的项目使用了大量的资源,如图像,图标等。 我已将这些资源嵌入到exe中,这些资源是编译的。 我使用普通的visual studio资源文件完成了它。 编译项目需要花费很多时间。 而exe文件很笨重。
所以我决定把所有编译的资源都带到另一个dll文件中。 并在需要资源时提交它,然后卸载它。 我对该负载资源函数的算法就像......
HBITMAP LoadMyImage (INT nResId)
{
HINSTANCE hDll = LoadLibrary (DLL_RESOURCE);
if (hDll==NULL)
return NULL;
HBITMAP hBitmap = LoadImage (
hDll, MAKEINTRESOURCE (nResId), IMAGE_BITMAP,
LR_DEFAULTSIZE, LR_DEFAULTSIZE,
LR_DEFAULTCOLOR);
if (hBitmap==NULL)
return NULL;
FreeLibrary (hLib);
return hBitmap;
}
这是考虑性能,惯例和复杂性的好方法吗? 请指教。
答案 0 :(得分:0)
实质上,这是一种合理的方法。我认为应该改进一些细节:
LoadLibrary
。使用LoadLibraryEx
传递LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE | LOAD_LIBRARY_AS_IMAGE_RESOURCE
。