Board logo

Subject: 请教一个TAAFont的问题?(宏定义相关)问题已解决! [Print This Page]

Author: lygily    Time: 2008-4-7 16:12     Subject: 请教一个TAAFont的问题?(宏定义相关)问题已解决!

TAAFont * AAFont = new TAAFont(tBitmap->Canvas);
AAFont->TextOutA(50, 250,"TEST", 50, 0);

C++ Builder报如下错:

[Linker Error] Unresolved external '__fastcall Aafont::TAAFont::TextOutA(int, int, System::AnsiString, signed char, signed char)' referenced from D:\BCB_PROJECT\20080407\UNIT1.OBJ

请问是什么回事?多谢了!

附我用的是2.63版本的AAFont
BCB版本为6.0

[ 本帖最后由 lygily 于 2008-4-9 10:51 编辑 ]
Author: zjy    Time: 2008-4-8 08:16

TAAFont 没有 TextOutA 方法,应该用 TextOut。
Author: lygily    Time: 2008-4-8 09:01     Subject: 续:TAAFont

用TextOut也是一样的,报的错也是报 TextOutA无定义,所以如果写上TextOut,结果也一样报如下错:

[Linker Error] Unresolved external '__fastcall Aafont::TAAFont::TextOutA(int, int, System::AnsiString, signed char, signed char)' referenced from D:\BCB_PROJECT\20080407\UNIT1.OBJ

因为编译器会自动判断该用TextOutA还是TextOutW,一般头文件中会有如下定义:

#ifdef UNICODE
#define TextOut  TextOutW
#else
#define TextOut  TextOutA
#endif // !UNICODE

那如果没有定义TextOutA,而编译器又主张去调用,是否是产生这个问题的原因?

[ 本帖最后由 lygily 于 2008-4-8 09:09 编辑 ]
Author: zjy    Time: 2008-4-8 15:55     Subject: OH,原来是宏的问题

你可以试试在调用 TextOut 之前 #undef TextOut,看能不能解决?
Author: lygily    Time: 2008-4-8 17:09     Subject: 回复 #4 zjy 的帖子

加了没有效果,还是报相同的问题。

不过还是要感谢zjy的关注!

[ 本帖最后由 lygily 于 2008-4-8 17:12 编辑 ]
Author: zjy    Time: 2008-4-9 10:21

把 #undef TextOut 放在 #include <vcl.h> 和 #include "AAFont.hpp" 中间,在BCB6下编译通过:

#include <vcl.h>
#pragma hdrstop

#undef TextOut
#include "Unit1.h"
#include "AAFont.hpp"
Author: lygily    Time: 2008-4-9 10:50     Subject: 回复 #6 zjy 的帖子

可以了,多谢了!




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0