|
error C2664: “void Gdiplus::GdiplusShutdown(ULONG_PTR)”: 无法将参数 1 从“unsigned long *”转换为“ULONG_PTR”
错误 `C2664` 表示在调用 `GdiplusShutdown` 函数时,参数类型不匹配。具体来说,`GdiplusShutdown` 函数期望一个 `ULONG_PTR` 类型的参数,但你传递的参数是 `unsigned long*` 类型。
### 解决方案
确保你传递给 `GdiplusShutdown` 的参数是 `ULONG_PTR` 类型,而不是指向 `unsigned long` 的指针。通常,你应该传递 `ULONG_PTR` 类型的变量,而不是指针。
以下是一个示例,展示如何正确初始化和关闭 GDI+:
#### 示例代码
- ```cpp
- #include <windows.h>
- #include <gdiplus.h>
- #pragma comment(lib, "gdiplus.lib")
- using namespace Gdiplus;
- ULONG_PTR gdiplusToken;
- void InitGDIPlus() {
- GdiplusStartupInput gdiplusStartupInput;
- GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
- }
- void ShutdownGDIPlus() {
- GdiplusShutdown(gdiplusToken); // 确保传递 ULONG_PTR,而不是指针
- }
- int main() {
- InitGDIPlus();
- // 你的代码...
- ShutdownGDIPlus();
- return 0;
- }
- ```
复制代码
### 关键点
1. **正确的参数类型**:确保 `gdiplusToken` 是 `ULONG_PTR` 类型,并且在调用 `GdiplusShutdown` 时直接传递该变量,而不是其地址。
2. **初始化和关闭**:在使用 GDI+ 之前,调用 `GdiplusStartup` 进行初始化,使用 `GdiplusShutdown` 进行清理。
### 总结
通过确保传递给 `GdiplusShutdown` 的参数是正确类型的 `ULONG_PTR`,你应该能够解决这个编译错误。
上述解决方案在VS2019中通过。
|
|