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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。  H3 S4 A6 g" X0 `
   希望大家一起交流交流。
! j0 i. y: k* k1 |2 @, r& t   这是最简单一个程序,在屏幕上显示:  "Hello World"4 w: |" k/ g; W- T! R
   这是直接使用gST-Conout功能实现。
& {% O; n! e1 H. u" g& |   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
1 K) F2 I& a8 p# x2 s5 B6 l1 K. @
3 i0 I. I9 ]% ]6 r3 M* z   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
7 S  z8 d/ R8 D5 A2 Q( _   Out->OutputString (Out, L"Hello World");  //实现输出
3 [, j* J8 [" r$ \: b9 ?# w, h6 x: k4 L( S7 l
   小弟不知道如何调用EFI封装好的这些输出输入库。0 C4 w. Z% a) w5 R! u9 @; H
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1522

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。1 q/ ]" {6 Y+ l0 Z$ F1 V5 ?1 a
加入这个PrintLibLite库后还是不行。
: F' t2 ^7 r: Z# U5 }编译执行不会有错,但他就是不显示。. l7 X/ {- Z* E0 b1 E
现在我将print.c, print.h放到同一个目前,
* \8 Z0 t! k  o) _- r( v直接写到make.inf中。就可以显示了。
. v- S4 ?% Y. x, H% N2 c当然,print.h要改变一下,不然找不到函数的申明。
) @. v9 k0 D; _( K2 J+ C) U; e
& j  T0 Y: l' O明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
9 m2 Q' i* A$ k( b如果是生成PrintLibLite的inf文件部分。! G9 m6 G4 E" y+ h3 J' w( d; g
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。# i& Q# ^( {0 e6 |+ l& {
[defines]- q, [4 F/ t$ N+ s
BASE_NAME           = PrintLibLite
* G7 \( j, C5 R1 q  zCOMPONENT_TYPE      = LIBRARY/ {( n" D& D6 q( X! n
8 l; ~  T6 L- F, |- O/ Q  q- f
[sources.common]
/ \5 |* a! O" @. v) Z  BoxDraw.c8 ~& `0 D# _7 x+ q3 x% A/ j
  Print.c& {" l* ]8 B' V) N
  Print.h5 f) v& l& X3 u/ B, N9 V$ Z
  StdErr.c
+ O+ f  x2 Y& D5 `% L  Unicode\PrintWidth.h
4 H8 S! T( x  x. s  m5 s, j$ b% B  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1521

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
! \: B6 u# `1 R8 k, l' j( B你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,$ ]! b6 U7 W. u4 T) ?
可能是其他原因,显示了但没有被看到,显示到其他的page中了。* g. y$ F/ X/ G, {; \1 E! Q5 P
重写一个print的东西,就可以输出。6 i& z. G& H8 K! w  h

( p1 {+ c* ~8 p) d( M( b7 [2 ]print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:# E) q. p; y. n  t
build...5 V/ {6 X) y9 C. H) Y
:error 7000:Failed to start command% B8 u. ^+ }" M& m
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
: q( _# H% ]/ y  D1 [$ K' C8 B
# b+ S: ?8 X- u* j5 u2 Q- vbuild...9 T) O0 e# B- e7 k0 z) h, w
  : error F0002:Failed to build module0 [$ [7 ?8 t4 p/ G- ~* H% u
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]% {, k1 U0 e3 M! h6 W
9 _2 q( O7 }9 E: C: P4 y
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
. }0 a& V2 s% T% vlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co9 h/ [3 |+ z0 j3 q
okie referenced in function __Print* `- f! s+ H1 C4 }$ a  K
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch7 i% g; z/ L$ Q' ]3 x
eck_cookie@4 referenced in function __Print
5 P& E6 L0 F6 L8 B# eD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro  [4 d- A4 o% C2 a
r LNK1120: 2 unresolved externals
' y" f: l8 o3 [& Y/ k% P- s* nNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
& o. l9 ?. N2 A5 }8 G5 B% x\link.EXE"' : return code '0x460'' q$ B# h" d$ G, i; N- K8 \' q& S
Stop.
. C0 r% {! W/ m. R& D9 A
6 Q& S, @9 U0 ?# s, k请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 19:12 , Processed in 0.094713 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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