- 主题:wingdi.h 头文件有个定义(OPAQUE)和三方库有冲突
怎么解决这个问题?
--
FROM 27.203.62.*
再封装一层,把有冲突的头文件隐藏起来。
【 在 smthxes 的大作中提到: 】
: 怎么解决这个问题?
--
FROM 120.244.156.*
三方库的不能隐藏,我必须得包含他的头文件,只是我不知道wingdi.h这个头文件是怎么包含进来的,我没有包含他啊?
【 在 dormouseBHU 的大作中提到: 】
: 再封装一层,把有冲突的头文件隐藏起来。
:
--
FROM 27.203.62.*
这世界上就没有不能隐藏的库。。。
比如你第三方库叫 foolib 。有个头文件叫 foo.h
/// foo.h
#define OPAQUE 100
void draw(int color);
你只需写个自己的库 myfoolib
///myfoo.h
#define MY_OPAQUE 100
void my_draw(int color);
///myfoo.c
#include "foo.h"
void my_draw(int color)
{
draw(color);
}
【 在 smthxes 的大作中提到: 】
: 三方库的不能隐藏,我必须得包含他的头文件,只是我不知道wingdi.h这个头文件是怎么包含进来的,我没有包含他啊?
--
FROM 120.244.156.*
是包含的头文件里的定义冲突,不是库冲突
【 在 dormouseBHU 的大作中提到: 】
: 这世界上就没有不能隐藏的库。。。
: 比如你第三方库叫 foolib 。有个头文件叫 foo.h
: /// foo.h
: ...................
--
FROM 27.203.62.*
封装一下你就只需要包含 myfoo.h 了。都不需要包含 foo.h 了,自然就不会有头文件里的定义冲突。
【 在 smthxes 的大作中提到: 】
: 是包含的头文件里的定义冲突,不是库冲突
:
--
FROM 120.244.156.*
myfoo.h里面是啥?
【 在 dormouseBHU 的大作中提到: 】
: 封装一下你就只需要包含 myfoo.h 了。都不需要包含 foo.h 了,自然就不会有头文件里的定义冲突。
:
--
修改:smthxes FROM 27.203.62.*
FROM 27.203.62.*
就是你要用到的第三方库里的函数还有各种定义。给他们改个不会产生冲突的名字。
【 在 smthxes 的大作中提到: 】
: myfoo.h里面是啥?
:
--
FROM 120.244.156.*
第三方库头文件不要了?
【 在 dormouseBHU 的大作中提到: 】
: 就是你要用到的第三方库里的函数还有各种定义。给他们改个不会产生冲突的名字。
:
--
FROM 27.203.62.*
VC++可以设置编译时显示include关系:
Project Settings -> Configuration Properties -> C/C++ -> Advanced -> Show Includes
把宏改名或者undef也行,
https://stackoverflow.com/questions/1040914/how-to-ignore-definitions-vs2008
【 在 smthxes 的大作中提到: 】
: 三方库的不能隐藏,我必须得包含他的头文件,只是我不知道wingdi.h这个头文件是怎么包含进来的,我没有包含他啊?
--
FROM 111.199.145.*