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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
7 j3 T- v' I! |' R   希望大家一起交流交流。: u# b% e: i0 T
   这是最简单一个程序,在屏幕上显示:  "Hello World"2 q  L0 [* h+ o7 K1 I$ Z6 V
   这是直接使用gST-Conout功能实现。
+ C: n9 }: H; B: H$ v2 p  r; f   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。. a% D1 l9 Y" y+ _% J: q0 W

( c' w% N& z8 x/ D8 q5 w! ?/ m. p: Q* ^   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
/ l9 ~$ d$ _( U6 Y0 g% E   Out->OutputString (Out, L"Hello World");  //实现输出
0 D0 ~  |" j$ B& \4 u) Y' e, W6 F, e- g
   小弟不知道如何调用EFI封装好的这些输出输入库。
# k  w5 j) z* d   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1388

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
! W- g8 }2 M; X$ W加入这个PrintLibLite库后还是不行。9 L9 {1 l$ o7 ]$ V" e$ x5 b
编译执行不会有错,但他就是不显示。
& q; i6 c- v% p5 b现在我将print.c, print.h放到同一个目前,; j* u% w8 Y8 @
直接写到make.inf中。就可以显示了。
+ d7 P) O! C5 J当然,print.h要改变一下,不然找不到函数的申明。
3 U3 ?) S7 [* E2 M
+ S/ b8 o( g; W: a明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
) a) W. \& _  u/ J- e如果是生成PrintLibLite的inf文件部分。
$ }+ k. M  ~4 j! K用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
4 @! R. |. N4 v/ D[defines]
, U9 t7 q# W* U) {! s3 @BASE_NAME           = PrintLibLite
: f- ~& h6 b$ z% ?* J. |COMPONENT_TYPE      = LIBRARY
# r/ a. G6 U% r/ x6 i7 ]/ p' i' Y# T6 O
[sources.common]% }2 Z- M9 B1 P" u! I! }9 S& U
  BoxDraw.c
! n5 i, b5 C* T' C. K  Print.c% w& ], N( k3 t$ b
  Print.h/ X. o8 }; @! ]% S8 N3 i
  StdErr.c& o$ l& R3 `7 p2 k% B3 e
  Unicode\PrintWidth.h5 h) r/ N, M$ c, v* S  q
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1365

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz1 {1 i% S: ^6 @8 A, F+ |6 {
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,& K( W# n8 J6 f3 ]7 o
可能是其他原因,显示了但没有被看到,显示到其他的page中了。' F+ j, ?+ g- x7 S6 X' c& V" f7 t9 q
重写一个print的东西,就可以输出。
4 m( x# W8 a; m# q4 y  v0 }
9 h" S& [( S  t1 bprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
; O9 W: \  ?0 C& A" G9 w6 ?" Ebuild...
6 B% d% H; o  t/ j$ E4 ], _ :error 7000:Failed to start command
6 M) R7 ~3 U' i  U. U+ q# V2 k" _                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
; E' Q) A/ |( W- a+ M3 ^" b9 m# l8 n8 n) v/ y* y2 F6 V+ H7 }% v
build...
% n: X4 G* V9 z+ y6 N7 c  : error F0002:Failed to build module! f9 L% ^/ w6 T/ Z; h& e8 V; F. `
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
! h( W; v4 f: E$ a# J1 Y/ {4 T: a+ u3 u% L
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下1 U) R+ z6 l% U* \
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
/ S  J) H  x0 A7 }okie referenced in function __Print1 _: [6 [. K; z4 n+ |* t, x% W9 @" ]
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch; g3 [, }& l- _7 ]- w# e' R3 @
eck_cookie@4 referenced in function __Print
2 J/ _; g  X' c3 M! yD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
% m2 v0 T9 ?$ L. ^: yr LNK1120: 2 unresolved externals: R3 T- f5 r' R6 ]( M5 R3 f* x# O0 R, {
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN. }5 s" L3 W5 `! c( Y
\link.EXE"' : return code '0x460'
7 H1 p$ V' u6 O/ G) U$ g0 rStop.
3 V( i3 ~5 L; Y6 a$ Y# i6 D8 D) U, A* ?" p1 G+ s
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 17:52 , Processed in 0.307502 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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