c00*_*0fd 5 c++ gdi+ visual-studio-2017
我尝试将 GDI+ 的以下定义包含到在 Visual Studio 2017 下编译的 Win32 C++ 项目中:
#include <objidl.h>
#include <gdiplus.h>
#pragma comment (lib,"Gdiplus.lib")
Run Code Online (Sandbox Code Playgroud)
我需要编译这个项目以支持Windows XP。所以在项目属性中我选择:Platform Toolsetas Visual Studio 2017 - Windows XP (v141_xp):
但是当我编译它时,GDI+ 库给了我这个:
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\objbase.h(239): error C2760: syntax error: unexpected token 'identifier', expected 'type specifier'
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\gdiplusheaders.h(891): error C4596: 'EmfToWmfBits': illegal qualified name in member declaration
1>c:\program files (x86)\microsoft sdks\windows\v7.1a\include\gdiplusstringformat.h(220): error C4596: 'GetTrimming': illegal qualified name in member declaration
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
Кое*_*Кто 10
#include在COM 相关标头的第一个(!)之前添加此行以修复objbase.h(239): error C2760: syntax error: unexpected token 'identifier', expected 'type specifier':
typedef struct IUnknown IUnknown;
Run Code Online (Sandbox Code Playgroud)
objbase.h(239)此修复有效,因为错误中提到的行包含static_cast<IUnknown*>(*pp);尽管 IUnknown 尚未在该位置声明。
我有点编译它,但这绝对不是一个好的解决方案。我将其发布在这里作为临时解决方法,直到 Microsoft 摆脱困境。另外,如果有人找到更好的方法,请告诉我。
我基本上不得不将整个项目降级为Visual Studio 2015 - Windows XP (v140_xp)仅编译一个写得不好的库:
这给库带来了一个问题std:
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cstdio(50): error C4995: 'sprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cstdio(53): error C4995: 'vsprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cstring(20): error C4995: 'strcat': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cstring(21): error C4995: 'strcpy': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cwchar(29): error C4995: 'swprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cwchar(30): error C4995: 'vswprintf': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cwchar(32): error C4995: 'wcscat': name was marked as #pragma deprecated
1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\cwchar(34): error C4995: 'wcscpy': name was marked as #pragma deprecated
Run Code Online (Sandbox Code Playgroud)
所以我必须避免那些不安全函数的错误:
#pragma warning( push )
#pragma warning( disable: 4995 )
#include <stdio.h>
#include <new>
#include <string>
#pragma warning( pop )
Run Code Online (Sandbox Code Playgroud)
这远非理想!
(你基本上只是为了编译那个该死的 GDI+ 库而牺牲了应用程序的安全性。)
| 归档时间: |
|
| 查看次数: |
6389 次 |
| 最近记录: |