zar*_*zar 3 c++ unicode mfc static-libraries visual-c++
MFC已经定义了这样的
#ifdef UNICODE
#define DrawText DrawTextW
#else
#define DrawText DrawTextA
#endif // !UNICODE
Run Code Online (Sandbox Code Playgroud)
但是我正在使用一个也有DrawText()函数的库,我猜MFC也定义了这个调用的变化,我收到了这个调用的链接器错误,因为很明显这个库没有名称为DrawTextW(...)的函数
如何使库函数在我的MFC应用程序中工作?
这不是MFC,而是Windows API.解决影响其他符号的宏的规定方法是暂时禁用宏:
// Temporarily undefine the DrawText macro
#pragma push_macro("DrawText")
#undef DrawText
// Call your version of DrawText
DrawText( ... );
// Re-enable the macro
#pragma pop_macro("DrawText")
Run Code Online (Sandbox Code Playgroud)
#pragma push_macro和pop_macro是不必破坏Windows SDK标头所必需的.
应该在类的头文件和实现文件中应用相同的方案.如果您无法更改此类的头文件,则需要将该#include指令包装在push/undef/pop序列中:
#pragma push_macro("DrawText")
#undef DrawText
#include "my_header.h"
#pragma pop_macro("DrawText")
Run Code Online (Sandbox Code Playgroud)