阅读:2297回复:7
s3c2440,3.5#横屏lcd,旋转显示。
我使用的是2440的开发板,3.5寸横屏。 PB4.2正常是320x240显示,想通过改驱动变成240x320显示。一直没能成功。最近使用PB5.0,通过改驱动,可以是320x240显示,也可以是240x320。通过参考,想在PB4.2下也改成240x320显示,编译出现如错误,向各位前辈请教。
BUILD: Linking e:\wince420\platform\smdk2440\drivers\display\s3c2440lcd directory Files: 0 e:\wince420\platform\smdk2440\drivers\display\s3c2440lcd\s3c2440disp.obj() : error LNK2019: unresolved external symbol "public: __cdecl GPESurfRotate::GPESurfRotate(int,int,void *,int,enum EGPEFormat)" (??0GPESurfRotate@@QAA@HHPAXHW4EGPEFormat@@@Z) referenced in function "public: __cdecl S3C2440DISP::S3C2440DISP(void)" (??0S3C2440DISP@@QAA@XZ) e:\wince420\platform\smdk2440\drivers\display\s3c2440lcd\s3c2440disp.obj() : error LNK2019: unresolved external symbol "public: void __cdecl GPERotate::RotateRectl(struct _RECTL *)" (?RotateRectl@GPERotate@@QAAXPAU_RECTL@@@Z) referenced in function "public: void __cdecl S3C2440DISP::CursorOn(void)" (?CursorOn@S3C2440DISP@@QAAXXZ) e:\wince420\platform\smdk2440\drivers\display\s3c2440lcd\s3c2440disp.obj() : error LNK2019: unresolved external symbol "public: long __cdecl GPERotate::EmulatedBltRotate(struct GPEBltParms *)" (?EmulatedBltRotate@GPERotate@@QAAJPAUGPEBltParms@@@Z) referenced in function "public: virtual long __cdecl S3C2440DISP::BltPrepare(struct GPEBltParms *)" (?BltPrepare@S3C2440DISP@@UAAJPAUGPEBltParms@@@Z) e:\wince420\platform\smdk2440\drivers\display\s3c2440lcd\s3c2440disp.obj() : error LNK2019: unresolved external symbol "public: void __cdecl GPESurfRotate::SetRotation(int,int,int)" (?SetRotation@GPESurfRotate@@QAAXHHH@Z) referenced in function "public: long __cdecl S3C2440DISP::DynRotate(int)" (?DynRotate@S3C2440DISP@@QAAJH@Z) e:\wince420\platform\smdk2440\target\armv4i\retail\s3c2440disp.dll() : error LNK1120: 4 unresolved externals 在文件E:\WINCE420\PLATFORM\SMDK2440\DRIVERS\DISPLAY\S3C2440LCD\s3c2440disp.h 有类定义:class S3C2440DISP : public GPERotate 可是找不到class GPERotate类定义在哪里?请各位前辈给予指点,万分感谢!maxim@163.com |
|
沙发#
发布于:2007-05-09 12:15
改注册表试试
[HKEY_LOCAL_MACHINE\SYSTEM\GDI\ROTATION] "Angle"=dword:5A |
|
|
板凳#
发布于:2007-05-09 17:30
跟注册表没有什么关系,gpe.h中有定义
typedef GPE GPERotate; |
|
地板#
发布于:2007-05-10 07:36
你需要连接GPEROTATE,其实这类问题比较好办,你查一下这些函数在哪个LIB中就好了.
|
|
|
地下室#
发布于:2007-05-10 10:16
Linkingr的错误找到了,是因为要在source文件里设置ROTATE=1我本来以为只为在头文件里设置#define ROTATE=1,就可以。现在可能正常编译连接了。可是屏幕并为旋转,请大家指教?
|
|
5楼#
发布于:2007-05-17 09:48
我也在做这个。
这个能实现吗? 解决了吗? |
|
|
6楼#
发布于:2007-05-17 09:59
如果驱动没问题了,那旋转就只要修改注册表就可以了,具体位置不记得了。好像系统中也提供了对应的API函数,找找吧。
|
|
7楼#
发布于:2007-05-18 14:52
转载:
winCE 4.2以上 一.修改 SMDK2440\DRIVERS\DISPLAY\S3C2440LCD 目录下的sources文件合适位置增加: CLEARTYPE=0 ROTATE=1 //这句是我加的 三.s3c2440disp.h文件头上加一句 #define ROTATE 四.s3c2440disp.cpp中 S3C2440DISP::S3C2440DISP (void) { #ifdef ROTATE m_iRotate = DMDO_90; // 90不对是DMDO_90=1!!!!; //0->90 我修改0-》90 SetRotateParms(); #endif //ROTATE 五。检查platform.reg中, [HKEY_LOCAL_MACHINE\System\GDI\Drivers] "Display"="s3c2440disp.dll" 以下注册表可以有可以没有。 [HKEY_LOCAL_MACHINE\System\GDI\Rotation] "ANGLE"=dword:5A ;0x5A for 90,这是我加的 ,加在gdi\drivers这项后面 六,要在S3C2440DISP::S3C2440DISP (void) 最后加一句 ((GPESurfRotate *)m_pPrimarySurface)->SetRotation(m_nScreenWidth, m_nScreenHeight, m_iRotate); 而s2440.h、2410中关于屏幕的东西不要去改,那是初试化lcd控制器的,与这里没有关系。 修改LCD控制器是另外一个方式实现LCD旋转的。 |
|
|