与DrawText函数冲突

时间:2009-04-22 20:52:11

标签: c++ winapi

我正在开发一个多平台应用程序,在一个组件中我有一个名为DrawText的类方法。不幸的是,我得到一个链接器错误(仅在Windows上),说这个类的DrawTextW方法有一个未解析的外部符号。

之前我已经看过其他以“Text”结尾的方法,它正在寻找FooTextW或FooTextA方法而不是我定义的FooText方法。我的假设是在Windows头文件的某处有一个宏定义,根据其他一些定义将FooText分配给FooTextW或FooTextA。

除了重命名我的功能(这是我过去所做的)之外,有没有人有解决这个问题的好主意?

感谢。

2 个答案:

答案 0 :(得分:5)

你真的只有两个选择:

#ifdef DrawText
#undef DrawText
#endif

或重命名您的功能。 Win32使用没有命名空间或作用域的宏,所以你有点卡住了。

我们只是重新命名我们的功能。

BTW:它通常基于#ifdef UNICODE(或_UNICODE或其他一些变体)。

答案 1 :(得分:0)

是的,使用Windows时这是一个真正的问题,因为标题都是这样的,所以无法将其关闭:

#ifdef UNICODE
#define GetDlgItemText GetDlgItemTextW
#else
#define GetDlgItemText GetDlgItemTextA
#endif

所以你要以任何一种方式定义符号。如果你能在#include'ing windows.h之前#define一些东西,这会很好地解决这个问题,但是不存在。