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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
1 w4 _5 U  J7 Y3 d  g7 o   希望大家一起交流交流。
! l3 r+ I% e9 H6 s1 ~   这是最简单一个程序,在屏幕上显示:  "Hello World"
6 _; t8 q1 g8 a8 d, E5 [' C& I- a   这是直接使用gST-Conout功能实现。
) C4 ~' f5 s8 ~5 u   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。: n* d1 [( A, Z7 S  R: o

  o+ ~- Q" N: q/ b, I& Y0 W   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
2 f3 x9 z# G, l  B$ U' k   Out->OutputString (Out, L"Hello World");  //实现输出
" H6 c& v: n) s
/ T3 x$ W. G/ G5 X& W6 ]! K   小弟不知道如何调用EFI封装好的这些输出输入库。) a1 b# N6 k2 p7 |& `: W
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 513

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。, L- T, \! E2 s5 |
加入这个PrintLibLite库后还是不行。
0 Q! w& }( A6 |编译执行不会有错,但他就是不显示。1 X3 Z$ I6 S; F- u! T) o# C" I
现在我将print.c, print.h放到同一个目前,
7 b2 t+ J4 P1 S$ y4 K$ r7 D直接写到make.inf中。就可以显示了。! b* l: W$ V+ t& S. I  k/ T
当然,print.h要改变一下,不然找不到函数的申明。
% j2 T. c$ u% V$ |( @0 F) E+ |6 r6 d8 M
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
- r# ]  L& x, P如果是生成PrintLibLite的inf文件部分。! M! u; O4 f- O0 t9 o9 ]
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
& ^, f, o" r( i5 [! \[defines]2 ]6 M! E& u. J2 ^! a% c  n
BASE_NAME           = PrintLibLite
) o) x4 |1 [0 G/ u6 |+ O, y+ U. ~COMPONENT_TYPE      = LIBRARY
8 G$ ]2 R- @) Z  c" ~0 W  n1 s" B) P% T) l" N( B
[sources.common]1 ?" _$ `7 V, A) _
  BoxDraw.c$ j* c/ ?+ p5 a. U5 K6 |
  Print.c5 k# C$ @# z# ?! A1 `- C1 j1 X6 f
  Print.h
7 M; ?* Z) f  U9 ~- c  StdErr.c
- ^; F( w5 y/ w$ I  Unicode\PrintWidth.h5 z9 r4 Q2 T3 W8 w) M
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 513

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz1 Z! z' Q. `3 F5 v
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,  |! Y/ e. ~1 X! z+ c' |
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
9 n$ l' F5 T. A8 w重写一个print的东西,就可以输出。
( n3 ?* `. J: W+ T, Z# M
  I5 J% B/ u- Zprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
3 o+ J  D! q- |* o) W) vbuild...
( v4 ]2 N: ~. R6 H8 J# c$ P :error 7000:Failed to start command
( \7 \& R* D2 A1 e4 l# ~8 S                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]5 e! J* M. M1 N8 j- \
8 N/ T0 o" ^: \. ]* L2 s) L9 |- U
build...
8 f. P2 g* q  A8 G# W  : error F0002:Failed to build module
/ l: X, n& Y1 O: f         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
+ V7 O+ k7 e* P; s5 H  R2 K  S6 Q) z( `  g+ n. ?; @6 C- {# p. q) w) [
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下. Q# f9 d5 V( P* r
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
' e. \) n, v8 V& s* R( Uokie referenced in function __Print  x2 B1 v5 P2 n* E
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
" b1 u$ x! T: R. u1 |eck_cookie@4 referenced in function __Print
/ @, a: k( Y  V' n# Y) d/ W5 wD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
% S2 b* q) H) i: ~+ S  Cr LNK1120: 2 unresolved externals
( N) }- G4 d1 k' zNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN  E2 f# V8 ~7 x
\link.EXE"' : return code '0x460') q- V) O  R; B
Stop.+ }, d1 N3 Y( G$ S

0 ?2 T$ C! n. t/ s请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 05:19 , Processed in 0.023325 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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