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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
9 P' J  @# p' J2 Z3 _   希望大家一起交流交流。
3 P2 T7 s: P" B7 H( P) \7 k   这是最简单一个程序,在屏幕上显示:  "Hello World"
4 Q7 I9 W/ b! n5 p9 s; \   这是直接使用gST-Conout功能实现。
6 L  l+ S0 C, N7 a6 ~: k8 K: o   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。) B) b$ s8 W/ X

0 @; J3 \8 I! n  H   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
& H4 F# i5 L' X) t! {7 b+ ?9 N   Out->OutputString (Out, L"Hello World");  //实现输出4 S, B4 _7 P4 k* v) S3 |
8 ~1 [7 Q+ M- d" k4 ?0 @. V6 \
   小弟不知道如何调用EFI封装好的这些输出输入库。% p/ _: _! Z9 D) p) b4 V% Q3 a
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 541

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
8 l% T& [) B6 _1 T3 S0 F加入这个PrintLibLite库后还是不行。5 ~# C* I" m& _- i. V
编译执行不会有错,但他就是不显示。
' c' D- s1 B; ?5 }, i现在我将print.c, print.h放到同一个目前,
* r8 [/ Q+ x6 J+ ^! u直接写到make.inf中。就可以显示了。! Y" j5 u1 c9 T1 ~: _
当然,print.h要改变一下,不然找不到函数的申明。
3 B1 }2 R3 N9 y5 N6 v6 {- m( X7 D0 V6 A; o5 E
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
% a3 a) C* D* @* i  z; m7 ?8 ^如果是生成PrintLibLite的inf文件部分。
  l. v; M% K$ X; u7 ~& q用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
& Q  Q2 {' F6 x% x+ C1 @. ][defines]7 g) E% c" y9 _. s; L) i
BASE_NAME           = PrintLibLite* ^" u- R" I- z( ]( X# f+ \1 y
COMPONENT_TYPE      = LIBRARY
, z. o4 e  r* \& T, v! j. X+ y1 [( `7 b
[sources.common]
' z5 R6 q4 _" z8 f2 A6 ~, S% U$ @7 Z  BoxDraw.c
# q# f% N' g( e. g, @  Print.c' X$ e# Y" D$ V3 p* v
  Print.h4 G$ H& e& q* F
  StdErr.c4 l$ B; x$ J5 @7 U  ?/ O& E
  Unicode\PrintWidth.h
3 V! J, Y! F: J: k  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 544

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz# O3 |' f: O6 M: b- [* K
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
6 \; K1 i4 E, d7 {3 C3 u+ Q: Z可能是其他原因,显示了但没有被看到,显示到其他的page中了。( K; v, F! ]$ A* L# T( R
重写一个print的东西,就可以输出。
: v! J# n( z; ?; V+ Y) t( `7 E+ b) B* Q9 M
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
* c! ]4 d1 p. ~" a% e2 i  e- lbuild...
9 `" T4 a# c1 |! o9 Q :error 7000:Failed to start command
: y7 A4 r5 C- Z9 G                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]4 Y9 `* b) Q3 i

, A, k3 H* x0 A2 c. `build...
9 ^9 j2 i+ M9 G) m/ j$ j/ p  : error F0002:Failed to build module3 j6 b0 P: g, F$ T4 l" i
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
! L6 O" K( t0 u* n1 u/ `/ m7 W+ `4 \# L
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下3 v8 G' C/ X% d/ C3 Y( b* q. t
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
0 o- ]6 U8 {( e7 Mokie referenced in function __Print
! ^0 j' J( `  b& T/ `1 P2 l* Glibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
+ V, V6 S5 b1 }$ ]1 }$ peck_cookie@4 referenced in function __Print
" y4 W/ G$ v! K! OD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
# E: l  L' O3 {r LNK1120: 2 unresolved externals/ R, Z8 v/ m9 M1 X: J: }) s8 ~
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
) \6 |5 Y- M$ x\link.EXE"' : return code '0x460'. g* u7 F* k9 C* U( Y+ R9 J# N9 A! o
Stop.
! y/ A" S8 G- f2 _% U* J) n
" b8 Y5 C9 }3 J7 i: O请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 17:12 , Processed in 0.045442 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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