找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 29127|回复: 6

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。. G) e, C( j" L2 m. [- [- j. G  M, V
   希望大家一起交流交流。( N5 u* J1 _5 l: X7 a1 P: e- \5 j
   这是最简单一个程序,在屏幕上显示:  "Hello World"; u) e2 \3 Z9 L7 B$ ~, a  c
   这是直接使用gST-Conout功能实现。6 G) {& H! v8 o" {
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。) F& K- J: _' x, T$ K
* V: `) ?3 x5 S2 t, }2 [  D9 t
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
( t7 {4 C* b$ t) n" {6 Z2 ?; n   Out->OutputString (Out, L"Hello World");  //实现输出9 e; p+ C- v9 ~, A* ~
1 B! E# y7 Z" ^  |6 |
   小弟不知道如何调用EFI封装好的这些输出输入库。
/ i0 b$ h$ u( x- b   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1587

EFI Hello World

发表于 2008-6-24 16:38:48 | 显示全部楼层
PrintXY是EfiPrintLib里的东西,看看你的程序的inf文件,有没有把EfiPrintLib加进来。
回复

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。8 S; h% P: b, |! u
加入这个PrintLibLite库后还是不行。
  U9 _+ p$ U4 ^  v编译执行不会有错,但他就是不显示。& B4 \) k0 e; }0 @2 Q
现在我将print.c, print.h放到同一个目前,3 `0 e# k! T$ l
直接写到make.inf中。就可以显示了。: P/ S. {% m$ {& F! r
当然,print.h要改变一下,不然找不到函数的申明。
# Z+ ^" e/ m+ N5 \
) I5 k0 Q( w! k5 o5 N  M, w% k明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
' N+ [) g5 i+ K% n4 j' n* X如果是生成PrintLibLite的inf文件部分。. C. M& b; d0 l3 E1 b
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
7 j6 k8 d2 `4 u, N3 i$ y[defines]
; g" S* O7 U5 U4 CBASE_NAME           = PrintLibLite# X& S# X1 ?. F- e- M9 c: b
COMPONENT_TYPE      = LIBRARY
5 ~; @+ a; ]4 N! Q1 B% l! _; e) m$ C, t% ?% ^& g2 j( C- s5 S
[sources.common]
. {; q+ {' s2 H7 i9 A  BoxDraw.c7 Z* F  f) b( p
  Print.c/ @8 X  q+ k9 ]
  Print.h( m6 H9 z2 T# X/ _2 U0 G
  StdErr.c' Z' q0 n6 ~- N2 Y& O) w1 @
  Unicode\PrintWidth.h
) x8 z1 T  K. x% D% _0 |; j  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1550

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz# r6 d/ P+ v5 n0 S" k7 [  i
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,) R. r8 s8 B7 n! ^9 A" \
可能是其他原因,显示了但没有被看到,显示到其他的page中了。4 H* L, L  E3 r2 Y) p
重写一个print的东西,就可以输出。# ^4 @; T. }6 a% `8 G. N

3 z5 n- H: D7 ~* S5 T. nprint()是在grouph,可以正常使用。
回复

使用道具 举报

发表于 2012-4-25 16:51:59 | 显示全部楼层

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
/ k0 A: q% O: [4 ?- U5 W6 ^" Sbuild...
' j& i' g/ U3 M$ v3 I :error 7000:Failed to start command
+ l. J, i! @; |/ L5 y9 L  U                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]" z" G( }; t" ^2 r0 ~

" Q5 [7 h2 a8 T+ w2 c9 D& u0 g4 Pbuild...6 j# j$ N4 K% O) x) ]
  : error F0002:Failed to build module5 N" ~% R+ y9 w# _, B/ X4 X
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]* |+ {, j3 e3 G& J) A9 i

- S" v9 |4 F5 g1 b8 I请指教啊
回复

使用道具 举报

发表于 2012-4-28 07:56:32 | 显示全部楼层

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
) o: o/ \" l& [libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
9 T' j  Z+ S9 {7 k) \okie referenced in function __Print
7 c9 C) f% ]. J$ Z: r5 |libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch2 z" K) p% j& ?, @" x/ y
eck_cookie@4 referenced in function __Print
( q8 h" o* V3 Z: sD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
& q9 e1 _2 r3 `; V! r5 Or LNK1120: 2 unresolved externals6 R2 `( M) _- v
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
" P8 Y' A  w4 G2 d* r\link.EXE"' : return code '0x460'  O. x* i( w5 F8 L
Stop.
4 X0 B+ E, c2 R+ Z+ R* X5 W6 T6 d
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2026-7-21 16:11 , Processed in 0.117059 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表