arm7000
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望16点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:2225回复:7

s3c2440,3.5#横屏lcd,旋转显示。

楼主#
更多 发布于:2007-05-08 16:57
  我使用的是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
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-09 12:15
改注册表试试
[HKEY_LOCAL_MACHINE\SYSTEM\GDI\ROTATION]
   "Angle"=dword:5A
努力! 成功就在不远处....
zhengshijie
驱动小牛
驱动小牛
  • 注册日期2003-07-11
  • 最后登录2009-03-18
  • 粉丝1
  • 关注0
  • 积分8分
  • 威望217点
  • 贡献值0点
  • 好评度199点
  • 原创分3分
  • 专家分0分
板凳#
发布于:2007-05-09 17:30
跟注册表没有什么关系,gpe.h中有定义
typedef GPE     GPERotate;
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-10 07:36
你需要连接GPEROTATE,其实这类问题比较好办,你查一下这些函数在哪个LIB中就好了.
学海无涯
arm7000
驱动牛犊
驱动牛犊
  • 注册日期2007-01-06
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望16点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-10 10:16
Linkingr的错误找到了,是因为要在source文件里设置ROTATE=1我本来以为只为在头文件里设置#define ROTATE=1,就可以。现在可能正常编译连接了。可是屏幕并为旋转,请大家指教?
bindaz
驱动牛犊
驱动牛犊
  • 注册日期2007-03-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分232分
  • 威望25点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-05-17 09:48
我也在做这个。
这个能实现吗?
解决了吗?
QQ550325618 msn:bindaz@163.com
etermis
驱动牛犊
驱动牛犊
  • 注册日期2006-05-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分190分
  • 威望20点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-05-17 09:59
如果驱动没问题了,那旋转就只要修改注册表就可以了,具体位置不记得了。好像系统中也提供了对应的API函数,找找吧。
bindaz
驱动牛犊
驱动牛犊
  • 注册日期2007-03-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分232分
  • 威望25点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
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旋转的。
QQ550325618 msn:bindaz@163.com
游客

返回顶部