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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
0 A& M& F5 K- u$ g7 z: q& l   希望大家一起交流交流。
4 I9 B# _* e1 _% }' ~   这是最简单一个程序,在屏幕上显示:  "Hello World"
; O3 S( D2 r4 G" _2 \   这是直接使用gST-Conout功能实现。
8 g4 p/ q+ w5 K9 j0 k   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
& M) {1 \' Y" Y1 ^* K' w$ M# V4 K9 G& V4 [5 `- d3 v
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
* s' U  t$ j$ T/ i# n   Out->OutputString (Out, L"Hello World");  //实现输出) F) |4 W# g9 ?. y

; A* |5 a$ ?- z+ r! J) o   小弟不知道如何调用EFI封装好的这些输出输入库。3 Y6 w7 J! e$ r* l
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1540

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。4 h8 F7 m0 Q+ E$ Q* J
加入这个PrintLibLite库后还是不行。4 z8 s* S, x+ p
编译执行不会有错,但他就是不显示。
0 N( J) |8 I) Y. Q) c现在我将print.c, print.h放到同一个目前,' B! t; c8 x$ i$ K" ]6 S  u- s1 Q1 b
直接写到make.inf中。就可以显示了。6 D, W$ B/ l% f% e& ?5 u9 f9 n
当然,print.h要改变一下,不然找不到函数的申明。
5 r. j3 f2 |- Y) `% }2 y2 _* D7 H7 C0 b; j2 W! f
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
! }* z% ]8 p# |& e7 ^  Y3 ?如果是生成PrintLibLite的inf文件部分。
& J" h, a% @1 M2 [用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。! R( H: u" A3 ?7 l6 g
[defines]
, q; s) w' ]' C. A* G( gBASE_NAME           = PrintLibLite
- a" k: ?5 @) F9 Q+ F$ A+ zCOMPONENT_TYPE      = LIBRARY8 }$ @4 l+ r; ^# t
4 F  J' y; P- `. }
[sources.common]
2 w4 A* l7 q4 B. ~' Y: c" b  BoxDraw.c
0 i5 B- m3 a) W  Print.c/ a& W" D4 A: T, }( y
  Print.h0 i- J. ^6 `1 ^0 J) k9 H+ b: m: b9 Y" z" i
  StdErr.c
) a& `: q$ X9 ]3 ~  Unicode\PrintWidth.h' O" s. R% r0 R; b8 ]
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1505

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz, \" b7 M8 i  x* N- ]& @2 V
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,. m9 c& P. N. N( p5 r0 k
可能是其他原因,显示了但没有被看到,显示到其他的page中了。7 P; g6 q) g! K
重写一个print的东西,就可以输出。
! ], {2 f- k! o2 B. x/ }  }# ^  d& N, ]7 d3 n
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
% u8 @3 e) b" ~' U" d- ]build...  f/ S- s6 u8 L
:error 7000:Failed to start command
4 }; {& B# `; e% O                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]- Q- p( C% H/ Y" s

& I  t" O, {3 kbuild...& q- r5 G& t# h$ D# _- T- z
  : error F0002:Failed to build module8 g& p) |, \7 c! n9 U$ [
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]' F4 I# |" U! ?- V5 U6 r$ A+ r1 `
5 j& D: T4 G. A, {
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
, k0 J+ W8 r8 U+ l+ ~! ]. vlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
* j& \) t- C2 i' V0 ]" u# Eokie referenced in function __Print" W, x% Q0 D0 ?& }9 P8 [* i* N
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch; ?6 N) H% s7 f7 i3 E" ]
eck_cookie@4 referenced in function __Print
7 h  D9 Y" b; C' QD:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
+ I" a# R; ?7 c/ o8 S+ Hr LNK1120: 2 unresolved externals' o6 y9 Z% f# q, ?! g4 W. i
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
! n: ?& {, ~2 F; @7 ^\link.EXE"' : return code '0x460'0 o( J: b* Y; [3 f' n
Stop.( m5 Z  U" T9 j* ~

- S" I' T4 {# x7 d: d8 q请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 08:10 , Processed in 0.190968 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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