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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
1 e, c- P" g) D; h" Q, \, t   希望大家一起交流交流。
+ y) @' m! H1 s8 D/ F% |   这是最简单一个程序,在屏幕上显示:  "Hello World"
* \, j, p" u9 N7 t; h8 A3 n  y* H   这是直接使用gST-Conout功能实现。
9 u, c; X5 y" F% _- j. N   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
: M8 @5 l$ b0 K  z2 a- r' J( p% G) u. c: x$ d
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
% B3 a" ]: m+ G0 P   Out->OutputString (Out, L"Hello World");  //实现输出% M9 ^. h4 H7 H" G' Y& e

$ V- ]7 @. ~1 {8 D4 I3 u9 D   小弟不知道如何调用EFI封装好的这些输出输入库。
$ M5 u" `, i( [/ \3 ^  h/ m   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1526

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
0 F, r, n3 O/ G加入这个PrintLibLite库后还是不行。! J: x8 p' Q' L+ N" E# N/ {
编译执行不会有错,但他就是不显示。# g6 [, X% {  ^/ D4 R6 m# }0 H
现在我将print.c, print.h放到同一个目前,( A  h# L2 G, }( b" K, c4 w
直接写到make.inf中。就可以显示了。% w) e1 j; Z* w/ R
当然,print.h要改变一下,不然找不到函数的申明。& o9 D+ g* o- O7 Z* `" M- ]: y
4 X$ P$ }; }' t7 a( l
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。/ G& b: g: v; L& t! S% E. E
如果是生成PrintLibLite的inf文件部分。  C1 C* l6 W: v4 ?9 X( W( ?
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
/ D0 F2 @& ~' h& m6 y[defines]5 D+ w4 o/ _* p5 ?8 w; e; @: D. u* g
BASE_NAME           = PrintLibLite
5 w. b3 [  B% DCOMPONENT_TYPE      = LIBRARY' L2 b; n- Q) |4 G
+ _! q; }) P% L5 X- H
[sources.common]
3 ^; J# ^, P; @# ^9 m! p% Y  BoxDraw.c
; t5 }. t- Y  Q* b1 k  Print.c  ?4 X0 m2 m( F9 I3 V3 E7 g
  Print.h
$ D& q% I" A6 l0 ]  StdErr.c/ M/ d: i$ x# s2 d. C& c. e" Q
  Unicode\PrintWidth.h( j* V) z# c& e; l3 ?! G9 k4 U
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1526

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz8 O. M. R0 e* ]* d, X" t" f* V( y
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
- ?" A$ E, w. A7 y3 |可能是其他原因,显示了但没有被看到,显示到其他的page中了。
7 D& V4 c1 F& l# Z8 ?6 N6 J重写一个print的东西,就可以输出。
% g, ~. V! C/ ]
  F& j# Q( \" ?& o( T6 Xprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:6 B1 [0 G2 T& R3 k
build...8 b) i# d( l$ Y/ |6 t9 V: c1 G% ^( e
:error 7000:Failed to start command( g1 K' b- c0 R( O3 L
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
4 t3 v9 g& e" P0 n5 ]0 `& y' _; c& h. _- ?- d
build...
; V7 w, U. i! @( j) p$ E  : error F0002:Failed to build module# x4 f5 f! V# Q. L
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]. f/ J8 y9 r$ H

; E& _3 I( N8 n# E1 R2 U请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
7 @4 B4 I+ ?0 n7 p7 c( w% L9 llibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co4 e$ V4 ]6 m( o9 c
okie referenced in function __Print& D" b; w& Z! v5 T
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch/ a) L1 m, F# V" A& x6 ^
eck_cookie@4 referenced in function __Print
: W& {. \( Q% J% [- J7 fD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
% I' z; f3 D2 T+ _r LNK1120: 2 unresolved externals6 H' x* f' ^: Y
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
/ ?# |- ^& D) I4 s) o8 h# V7 k\link.EXE"' : return code '0x460'
$ b0 z4 ]% r* s# {2 d, p9 YStop.9 r/ M, ^7 b- s: \1 ~

4 h6 @) P3 X& \# H/ D6 v请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-22 23:22 , Processed in 0.119875 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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