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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。7 ?( _7 G4 P7 f+ L
   希望大家一起交流交流。
2 q' g) a5 P3 x, o& x9 b3 C   这是最简单一个程序,在屏幕上显示:  "Hello World"
+ w# Q6 [; K) f/ o2 y   这是直接使用gST-Conout功能实现。0 b; m' ^) w/ ~4 S; H' `  _! q
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。1 i9 J; u8 u, j& a& Z9 J/ ^6 M
, B0 ?4 U0 b- J
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0& C, t9 _: {0 F' w
   Out->OutputString (Out, L"Hello World");  //实现输出7 Y  l. h' W4 O- J  S

" h8 N7 m. p/ ^$ L$ |3 @- v   小弟不知道如何调用EFI封装好的这些输出输入库。* n0 x6 Z- ~1 b5 @7 b
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1545

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。+ A3 v3 e" Z# F1 t
加入这个PrintLibLite库后还是不行。
* y# v/ C7 T: l6 s6 T+ M- n编译执行不会有错,但他就是不显示。
1 Z2 V6 I1 d6 {' w5 c现在我将print.c, print.h放到同一个目前,. p' Y7 p, k4 d5 K/ V
直接写到make.inf中。就可以显示了。
( v$ Z% h0 C/ ^$ F当然,print.h要改变一下,不然找不到函数的申明。. ]5 ~' ~4 j6 @7 U$ x5 Y

- {6 l& e( Y7 K- C% @( C明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
9 N: S4 K9 O! W2 J, {7 ~如果是生成PrintLibLite的inf文件部分。
* E1 z& I& o. c5 T& ?* g用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。# z6 u! n, ?: e0 g
[defines]) }% R0 f) V" K" q( F6 g4 k% S
BASE_NAME           = PrintLibLite5 K6 [/ H9 H, N3 O
COMPONENT_TYPE      = LIBRARY7 l. S: \  S+ _; E* G; o
/ p# D- R$ w* c) B6 M5 ^
[sources.common]
- P; \4 Q! L1 t3 `9 e  BoxDraw.c* |7 i9 L6 j, O: n; g+ Z
  Print.c+ W) [0 b5 _4 a( F2 U0 x
  Print.h
5 A8 p' z! Y/ m* ]8 x; Z  StdErr.c5 O( d3 H+ Q+ @0 f6 c
  Unicode\PrintWidth.h+ w2 P4 u0 H) c  ^$ F; g8 L9 q
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1550

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz: F9 y) r0 x9 t/ e6 ]$ }
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
  _, V1 T# R: N( i  _, L可能是其他原因,显示了但没有被看到,显示到其他的page中了。" S9 R; @& g# I8 m/ U/ M% ]! [
重写一个print的东西,就可以输出。
1 A5 Z" R0 G3 O' R$ i
( F8 [6 h( b9 l# R9 ]. d9 cprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:# q  X8 ^5 j1 z5 e" {% ~* t4 \5 t
build...7 t+ \' M& E( n# C: l* Z8 m
:error 7000:Failed to start command
* _; e" z2 I* O7 C$ ?% ?) r2 `                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
, C% x* n/ }  D4 R$ E" v( r, a- u6 K
build...
; T: ~4 ?$ I! ^0 t, O  : error F0002:Failed to build module
( ?  V0 E" C* g1 O6 e# q# y2 ^         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]' M8 O& h. d6 R7 w  Y: g: l
6 ]- K/ m7 p! G6 P* [/ g* ]# m' s
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
/ V+ X: [" ]% `  E; S4 b5 m4 `libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
8 r# y8 Y# h$ {7 x" m: P. Eokie referenced in function __Print; k, ?2 O& E9 i* L: r
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
( G+ l1 W' ]# Y. `0 i0 ]eck_cookie@4 referenced in function __Print
1 k7 k! ^- R0 y2 u8 d. ED:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro$ q/ N- e7 R# A/ Y) c' n
r LNK1120: 2 unresolved externals
" J" M( n: [2 PNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
8 L3 |: R& M* P/ l' \\link.EXE"' : return code '0x460'
& b' G/ J) K6 x' rStop.
1 ?; n+ Y& |/ p+ W& A& \1 V
0 S4 U; C1 c; `, z) k请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-3 21:43 , Processed in 0.229888 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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