我正在开发一个多平台应用程序,在一个组件中,我有一个名为DrawText的类方法。不幸的是,我得到了一个链接器错误(仅在windows上),告诉我这个类的DrawTextW方法有一个无法解析的外部符号。
我以前在以"Text“结尾的其他方法中见过这种情况,它寻找FooTextW或FooTextA方法,而不是我定义的FooText方法。我的假设是,在Windows头文件中的某个地方有一个宏定义,根据其他定义将FooText赋值给FooTextW或FooTextA。
除了重命名我的函数(我以前就是这么做的)之外,有没有人有什么好主意来解决这个问题?
谢谢。
乔
发布于 2009-04-22 21:23:56
是的,这是使用Windows的一个真正的问题,没有办法关闭它,因为所有的标题看起来都是这样的:
#ifdef UNICODE
#define GetDlgItemText GetDlgItemTextW
#else
#define GetDlgItemText GetDlgItemTextA
#endif所以不管用哪种方法,你都会得到符号的定义。如果你能在#include‘’ing windows.h之前定义一些东西来关闭这个行为,那就太好了,但是遗憾的是,现在还没有。
发布于 2009-04-22 20:53:47
你真的只有两个选择:
#ifdef DrawText
#undef DrawText
#endif或者重命名您的函数。Win32使用的宏没有命名空间或作用域,所以你有点卡住了。
我们只是重新命名我们的函数。
顺便说一句,它通常基于#ifdef UNICODE (或者_UNICODE或其他一些变体)。
https://stackoverflow.com/questions/779185
复制相似问题