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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
4 `( J) ]% g* f& h( W   希望大家一起交流交流。- l! @2 K# \/ Y1 D
   这是最简单一个程序,在屏幕上显示:  "Hello World"0 h2 z/ T+ l% h$ d# A. V4 G
   这是直接使用gST-Conout功能实现。
: A- O, S1 n0 X( ^+ w   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。( |: ]+ y, M) ^+ o! K

* ]& ?: U  ]% p  J! e' J   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0. h3 Z1 n$ l" y+ B  I
   Out->OutputString (Out, L"Hello World");  //实现输出
( `# M) c; h# ?! P, G" N& f, r$ C* E6 S$ K, L9 `. s5 c6 w# M
   小弟不知道如何调用EFI封装好的这些输出输入库。
3 g) a  ^* E& L7 {1 L# ^0 g8 Y5 |   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1107

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。7 \, G3 ?  t. W2 ]+ e3 o6 c8 K
加入这个PrintLibLite库后还是不行。
5 ?0 S7 L0 ^% E: L编译执行不会有错,但他就是不显示。
# |- n5 k9 w7 N- x现在我将print.c, print.h放到同一个目前,$ D+ q2 T" ~2 R+ a
直接写到make.inf中。就可以显示了。
# y. F4 i# v3 N3 f7 E/ I当然,print.h要改变一下,不然找不到函数的申明。
' j! N8 h  U' t0 v7 N7 O0 J4 M7 N: q5 O0 M
. u) a; D( |1 I+ y明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
, S, ?# P$ b8 X4 Y$ `" B: {* u如果是生成PrintLibLite的inf文件部分。
% q. k) S/ {! K9 R! f8 z+ j用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。0 I1 G/ j- R( r  g
[defines]
% T8 f; d$ I- ]. z+ SBASE_NAME           = PrintLibLite8 k  ~" D/ W" _9 `" \
COMPONENT_TYPE      = LIBRARY4 G+ X  j0 s+ e) l

5 ]9 y* L& \8 W; ^+ Z[sources.common]
1 U: l' a; @/ |2 I  BoxDraw.c
% o" h& _2 s' n, w" B  Print.c- ^) |7 @; C% o( C5 T
  Print.h
  T( N1 Q7 D, U) ^0 }  StdErr.c
2 d4 o4 V) A, O. V7 O  Unicode\PrintWidth.h
: S& H1 J9 C8 w9 }1 W  n3 ~9 z- V  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1126

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz) d6 A1 ]0 k( N* F. i+ r
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
! [, p) U/ a/ Z. X可能是其他原因,显示了但没有被看到,显示到其他的page中了。
/ I$ S; y: v0 S8 p1 @$ J重写一个print的东西,就可以输出。/ U( I. B  k, g% X+ V' {3 d
) }( W$ l5 @" V/ t
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:5 y' S4 i5 r; X
build...# Q+ I8 S+ E; m) [  S  g3 m
:error 7000:Failed to start command
6 V0 y% I: W( Q! R( Q                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]7 m' a  ~1 @* l

0 ?- y- r" b5 t9 n  obuild...3 e1 w$ C( N- x; S! Z' T6 h) |
  : error F0002:Failed to build module& Y8 B% G7 m- g; O
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]3 y8 }0 ]% p9 J/ y
# M% W9 ?! Q) h5 V
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下- ?# d' G7 d1 X4 [
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
4 x2 W! l# B" E: Hokie referenced in function __Print8 V& x3 P& b& X7 P! u
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
) S" \, R, k3 beck_cookie@4 referenced in function __Print2 F5 Y8 K. k' o/ K8 p
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro0 C. h) {4 f& o+ _* p8 a* W. A
r LNK1120: 2 unresolved externals
& e" E$ ?% u" K; ?5 BNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN. P% m& y* l$ {5 ?- ]. @( f
\link.EXE"' : return code '0x460'
6 Y4 w6 m) M1 XStop.
5 {* y. N( q$ i' S9 u+ z
& k3 c/ x; q, B7 ]- h0 g0 p请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 00:44 , Processed in 0.063686 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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