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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
6 V& D0 l: m0 Y" D% {9 n& N) ?   希望大家一起交流交流。5 n+ L. o: s: _( F9 m
   这是最简单一个程序,在屏幕上显示:  "Hello World"3 j3 E# f" x& Z0 L
   这是直接使用gST-Conout功能实现。4 K+ w( ^' q( [+ T- L; ~
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
" w2 b. j! q. i" ~+ }$ J% F! e; }3 u) H& i: i9 |7 k
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
7 s  q$ R8 s8 l% F   Out->OutputString (Out, L"Hello World");  //实现输出
) \! {$ l0 i: i& n8 Y/ E
2 Z. o" Z1 E' J& L/ u   小弟不知道如何调用EFI封装好的这些输出输入库。- `3 X( U, Z# j' p
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1477

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。4 }& b& S) Q$ k5 ]
加入这个PrintLibLite库后还是不行。
  F8 M" s4 E0 o# \) `( x编译执行不会有错,但他就是不显示。6 G* X+ f5 r1 ^6 r. T' J
现在我将print.c, print.h放到同一个目前,# b6 L' u% H" ^: W
直接写到make.inf中。就可以显示了。( A" c! ]1 X0 |% I
当然,print.h要改变一下,不然找不到函数的申明。
$ V6 d- U. N0 U" g2 x
" u! f! @5 {( o- i9 `( C明天了如何输入,但不明白为什么用printliblite不能得到输入功能。6 h: E* V6 i$ k1 C  J
如果是生成PrintLibLite的inf文件部分。
- a* Q0 \: q$ F: M" R* o用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
3 Y/ @( C0 @8 e[defines]
8 }- B, R( q  Q. v% EBASE_NAME           = PrintLibLite
! e. F( V9 `1 m* C+ Z1 }COMPONENT_TYPE      = LIBRARY
; Y2 X" O& ?$ Y- w! v" I2 o1 t8 g- f* f3 {2 I8 w  B
[sources.common]
0 @3 t3 k  u1 d# C% B8 ^  BoxDraw.c, C; t0 X4 l* F$ x( ^  v; z) X0 ]
  Print.c
2 a6 C" q3 G9 K+ R/ c  Print.h- _+ `1 _5 n1 C' G9 O9 p/ |; T% V/ T
  StdErr.c/ ]4 j# P6 D# f. [1 H4 s* K
  Unicode\PrintWidth.h, p* w! w% I+ z
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1448

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
- \9 _( i/ s' }7 E' ^/ M% g& t- j- B3 ]9 t你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
; H6 |8 [* n3 e. u% A) \可能是其他原因,显示了但没有被看到,显示到其他的page中了。( _8 y& E6 c% H; r! v: @( i- G& q
重写一个print的东西,就可以输出。( {9 n# i/ @4 g% u
0 q  _0 I& m4 I7 R% q6 h8 |7 U9 Z
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
7 m0 f8 }# ~" ?3 `* Y% Cbuild...
7 x4 V* Y" `2 p5 z- Z- b9 s) M :error 7000:Failed to start command
2 T/ w/ g3 a6 [% r5 F                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
. O1 N4 I, c+ ^) ]% k+ j  s! N* g! J. A! [, l
build...% F7 p1 ^' N( I7 r
  : error F0002:Failed to build module  b" d$ g3 E( c3 ?' @" Q, ]0 @+ V, `6 ^
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
" O! w% |% Z, F# y! }, y9 x- _5 I; Q" A
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下7 H9 \- l  f' z6 Z% C/ a
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co8 J3 [5 i* |# g# I0 {$ u4 @
okie referenced in function __Print
6 Z* d* w* z7 clibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch; B2 ^7 [# U+ K4 s0 E/ ^: F
eck_cookie@4 referenced in function __Print
1 Y4 W7 y. w5 Q! X4 C- b- `D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro2 [" a% n; |9 j) h
r LNK1120: 2 unresolved externals8 ?4 b" {3 @: B1 s
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN$ Q2 O' {# T0 }) J+ e
\link.EXE"' : return code '0x460'
2 R+ b% l* @1 XStop.5 J6 A3 K  M' M

: v" W; L' P" Q! o0 o请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-11 16:04 , Processed in 0.054839 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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