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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
1 h% j2 j, c% F   希望大家一起交流交流。
3 ~3 \: @( ?6 U7 O   这是最简单一个程序,在屏幕上显示:  "Hello World"4 y) b3 U3 P( {5 @4 q% S
   这是直接使用gST-Conout功能实现。
1 J. X$ N5 f/ A   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
. i1 g% S' @/ T4 p7 r; W+ c1 B
" `9 C8 \; ~- L8 b   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
* U9 P, u  ^* P7 f+ A+ Q   Out->OutputString (Out, L"Hello World");  //实现输出  I) R5 |" t+ W2 ~4 q- ~" a
/ c% o5 Z; r! v2 O
   小弟不知道如何调用EFI封装好的这些输出输入库。( c. d* A/ f5 V* @" D9 O/ i
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 921

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。0 @; K; ~6 t, w8 _$ W( W# @
加入这个PrintLibLite库后还是不行。* E: ?9 p# [. h5 g# e3 F
编译执行不会有错,但他就是不显示。
; X4 w% f4 p8 b% v- {现在我将print.c, print.h放到同一个目前,
- C6 o8 Z" K  U直接写到make.inf中。就可以显示了。
0 q: n9 q5 [+ @; U8 D+ T# O+ ~当然,print.h要改变一下,不然找不到函数的申明。% }6 I2 w9 D4 g) V# V
8 Z& k9 T1 `0 q7 q/ ]
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
* {5 z8 Y7 k- y! z3 Q+ ?如果是生成PrintLibLite的inf文件部分。: o8 @0 Z. W. n& s4 X7 I, w* L& ?& R
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。  J4 O2 N7 t3 C) U
[defines]+ c- D/ u: J; [: q
BASE_NAME           = PrintLibLite
3 o4 c8 A5 i  ^$ @" a5 @! QCOMPONENT_TYPE      = LIBRARY( I# E, E# T  z  M, k
" N8 `4 B' E& f0 ]1 t  Q  v
[sources.common]
. [+ I/ `" d3 `* t8 V  BoxDraw.c
8 s6 a# G- m2 O* f: v3 k) l  Print.c
# w' y; x2 }, O2 i  Print.h
( Z3 l6 u# r6 [( X+ `* G& ?6 M* p  StdErr.c: x3 I) d% H; A. |% |
  Unicode\PrintWidth.h' q) P9 Z- |0 k' q
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 931

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz  e( U& z2 G0 |, V, i. e
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,
# Q% I" Y/ p. `可能是其他原因,显示了但没有被看到,显示到其他的page中了。0 ?$ N3 P% _7 _( C4 s
重写一个print的东西,就可以输出。
7 E. l( x9 o; v- [
9 p  G; c& |( R( f5 a# pprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:1 X8 y7 [5 o  ?) X9 D5 G* C
build...
" k* V! ~5 t% S! a :error 7000:Failed to start command
1 Z0 T2 \2 k% U$ T! c                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]- v2 N2 S7 G; t$ h8 m6 ]9 L4 s2 K+ A

9 B! N# x4 U' {# P. R" h9 o3 \0 mbuild...
2 I, r, S6 B; q5 F2 r0 X  : error F0002:Failed to build module, o# O+ C% H$ _+ \: o9 |* f
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
9 f. ]$ d. ~6 F" \; c0 I/ b' M# b, X7 B
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
( c! m' h% `! I, j+ h( T. Hlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co4 E0 R! ~, P1 B5 h! W- J
okie referenced in function __Print6 `9 r( K4 E* o/ q; Y
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch8 C) T8 u& ~7 |( t9 G! j
eck_cookie@4 referenced in function __Print: ^0 P. d* p% w
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
' ~4 E# U( J2 i5 M4 jr LNK1120: 2 unresolved externals
1 k2 I/ T6 D4 L3 m+ _& fNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN2 l: S& E( j$ Z+ m& U
\link.EXE"' : return code '0x460'6 z' M9 p) z3 x- {
Stop.
! U: R4 f6 d. b! Z
- \: \+ v; o! h, {3 ^& p请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 10:56 , Processed in 0.168543 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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