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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
1 D/ ~2 p' Z) e3 l& s5 a* g: G   希望大家一起交流交流。9 x! m& d9 c& c2 X' Y
   这是最简单一个程序,在屏幕上显示:  "Hello World"% j9 h2 Y$ V0 D7 F4 ]) `. T
   这是直接使用gST-Conout功能实现。
8 K$ t) k$ B5 v: V( g   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。9 ~5 D/ X+ j1 I3 D

5 n1 _. {" D+ C/ p. H5 i! X   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
8 V3 A8 m9 f5 U& o1 ~8 O& u   Out->OutputString (Out, L"Hello World");  //实现输出
7 i' M8 Z) g( |6 b4 e% m" c! O% z7 S9 g
   小弟不知道如何调用EFI封装好的这些输出输入库。
5 l& p3 W& J+ c2 ^; `   希望大侠指点一下。

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 | 显示全部楼层
问题解决了。
1 _8 R8 B* p+ \& v- H加入这个PrintLibLite库后还是不行。4 R( v  O4 \( L/ E& ?5 }
编译执行不会有错,但他就是不显示。) w. X( t7 h2 a* n7 l/ E
现在我将print.c, print.h放到同一个目前,3 r" a, b8 u  \% t) v8 ^# h
直接写到make.inf中。就可以显示了。
7 F7 D' \$ ~1 g当然,print.h要改变一下,不然找不到函数的申明。# @4 ]! Y' X- y+ M. y! D: O  P1 ]
2 |- i; I; p1 e5 p
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
& T0 M4 h! g5 P1 v& D1 p5 r$ @如果是生成PrintLibLite的inf文件部分。
8 v. y0 p* t( {$ f9 }  M0 F用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。4 S' U/ S" f. J2 l/ N' \4 V% v
[defines]
- E% I0 i  _5 g; RBASE_NAME           = PrintLibLite
  i- ]" e; g# Q5 o, N$ R+ WCOMPONENT_TYPE      = LIBRARY
6 S6 z* M! f5 Y+ F  n, b$ z2 H7 @' e4 R  C% G
[sources.common]1 R: T; H: M; i; {4 G9 B# c5 _
  BoxDraw.c
+ f1 F2 T) l# n4 e, S  Print.c# O4 T9 K9 T8 C7 r5 t9 n$ c6 d) Q/ f
  Print.h
& d( P% U  g8 o8 l" R3 B) p3 m8 W  StdErr.c! o* R/ Y* k' J
  Unicode\PrintWidth.h
0 L" I( K  w' m3 k" v  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1505

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
! [/ m( ?/ L: |1 e2 N& _$ m你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,$ h7 T! {& c' `7 z
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
! [9 E% Y, o) v" t/ E1 q重写一个print的东西,就可以输出。
+ V# [5 @. T$ J8 m# M  \! n4 O6 E0 {6 |7 \# g1 c% J
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:% O  v# t9 K! y8 f
build...* C. ]- T- [8 W* m
:error 7000:Failed to start command9 l2 q5 u; g) G) k( w: l2 g3 w: |: L
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]7 y$ _9 e) P, K; J9 n

3 Z3 W1 {' p0 pbuild...( P3 r$ a! G; f& o
  : error F0002:Failed to build module
/ r- X1 {4 C4 }8 A3 `         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]- d. k' P; B4 F8 _

5 n; r% d. @$ a1 H请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
7 O! V# l, z1 n) _; flibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co) G# Y( m3 R3 r' r# H& {! P* W  x
okie referenced in function __Print
; j2 ]  P+ L0 H0 @2 blibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch& _. Y  W- w* B3 [$ }7 u0 c
eck_cookie@4 referenced in function __Print8 Y( T5 V, t+ `1 e: T% _: R3 `
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
  g* u$ W+ W+ i+ |r LNK1120: 2 unresolved externals
! j! a; ^# j- PNMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
2 h* s4 l* f; J+ p\link.EXE"' : return code '0x460'; f  \. B2 C. s$ G. U+ k1 n
Stop.
  S. q. g# j2 i2 T- L! e& e
( U# i0 f) C& d* G请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 07:07 , Processed in 0.059123 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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