下面是一个创建纯资源 DLL 的完整示例,包含创建 DLL 项目和使用该 DLL 的示例代码。 1. 创建纯资源 DLL 项目 步骤 - 打开 Visual Studio,创建一个新的“动态链接库 (DLL)”项目。 - 删除默认生成的 `.cpp` 文件,只保留 `.def` 文件(如果有)和 `.rc` 文件。 资源脚本文件 `resource.rc` ```cpp // 定义资源 ID #define IDR_MYSTRING 101 // 定义字符串资源 STRINGTABLE BEGIN IDR_MYSTRING, "This is a string resource from DLL." END ``` 模块定义文件 `resource.def` ```plaintext LIBRARY "ResourceDLL" EXPORTS // 纯资源 DLL 一般不需要导出函数 ``` 2. 编译生成 DLL 编译项目,会生成 `ResourceDLL.dll` 文件。 3. 使用纯资源 DLL 的示例代码 ```cpp #include <windows.h> #include <iostream> int main() { // 加载 DLL HINSTANCE hDll = LoadLibrary(L"ResourceDLL.dll"); if (hDll == NULL) { std::cout << "Failed to load DLL." << std::endl; return 1; } // 从 DLL 中获取字符串资源 wchar_t buffer[256]; int len = LoadStringW(hDll, 101, buffer, sizeof(buffer) / sizeof(wchar_t)); if (len > 0) { std::wcout << L"Resource string: " << buffer << std::endl; } else { std::cout << "Failed to load string resource." << std::endl; } // 释放 DLL FreeLibrary(hDll); return 0; } ``` 代码注释解释 - `resource.rc`:定义了一个字符串资源,ID 为 `IDR_MYSTRING`,内容为 `"This is a string resource from DLL."`。 - `resource.def`:指定了 DLL 的名称为 `ResourceDLL`,纯资源 DLL 一般不需要导出函数。 - `main` 函数: - 使用 `LoadLibrary` 函数加载 DLL。 - 使用 `LoadStringW` 函数从 DLL 中获取字符串资源。 - 使用 `FreeLibrary` 函数释放 DLL。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 确保资源 ID 在 DLL 和使用 DLL 的程序中保持一致,否则无法正确获取资源。 2. 加载 DLL 时,要确保 DLL 文件的路径正确,否则 `LoadLibrary` 函数会失败。 3. 处理资源时,要注意字符编码,使用 `LoadStringW` 函数时要使用宽字符类型。 [2025-08-08 12:34:58 | AI写代码神器 | 659点数解答]