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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。2 s- E% I/ O5 v4 S8 p6 }( m1 V7 d2 e
   希望大家一起交流交流。. x. q9 H, w- _3 X) B$ K
   这是最简单一个程序,在屏幕上显示:  "Hello World"6 m4 y9 O, p5 u, \' Z
   这是直接使用gST-Conout功能实现。( `4 i: V5 z% V: R' S4 m
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。
) Q, P9 x* _7 ~( w! o/ s
( p( q- Z6 a- L  e   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
* S' m  z, D# k& ~+ i   Out->OutputString (Out, L"Hello World");  //实现输出; M. s- _% f  y% z

( i0 w( S$ ~2 y   小弟不知道如何调用EFI封装好的这些输出输入库。/ Y# ~" g! H0 ^0 M8 j& D. M* J9 ~7 q
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1517

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。" I: u9 e. z3 p" u9 g9 k: f
加入这个PrintLibLite库后还是不行。
# ]/ I: I5 o$ D编译执行不会有错,但他就是不显示。4 \$ e* k3 o% x. Q- m/ q2 \
现在我将print.c, print.h放到同一个目前,4 E- |3 G4 f/ Q1 _; e$ q; Y9 X% {
直接写到make.inf中。就可以显示了。4 |* O5 u( H, h
当然,print.h要改变一下,不然找不到函数的申明。
$ w" T. V! k# r# i) q1 m) k- P  h1 ~& W$ C- j0 `0 s& V/ d
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。3 [# x( V9 u1 T* O9 i; ^9 n" f
如果是生成PrintLibLite的inf文件部分。  o% ]! P( h0 @* Q1 \
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
2 v- @; F; a# U. f7 \, ?5 x[defines]
8 |* v0 P# D( w7 o' |  _BASE_NAME           = PrintLibLite* M% J0 h& O( T" x! f2 n
COMPONENT_TYPE      = LIBRARY2 k3 z; n8 V/ O; H1 ]! Q7 d
& ~: s+ N8 H" L5 o0 x
[sources.common]
$ C+ A  \+ Q+ v  BoxDraw.c! q% h, u, u4 W* ]2 f! s5 ]5 P  k
  Print.c
6 Y0 T/ |  {4 d4 Q  z0 g  Print.h
; R" l9 z2 h/ g$ J2 w  StdErr.c  x. H: v( E% V3 x
  Unicode\PrintWidth.h
( F- {( T2 o9 e+ d+ @( _' H) L6 u  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1485

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
0 V& S2 b9 R+ I7 _! ]4 C$ @" c你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,! s+ {0 O( f3 I. h( c) c" n& [& z
可能是其他原因,显示了但没有被看到,显示到其他的page中了。' y9 m, W9 U( }! l
重写一个print的东西,就可以输出。1 U, w# q6 K5 J- S% L" s
! N% A6 b; F( f7 K
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
+ A6 N2 g4 Z$ {, _% Gbuild...$ S- }& o7 X1 [- x0 H
:error 7000:Failed to start command' N, L: w% d8 l  y: Q
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
8 F1 I9 m7 d- q% t6 z
9 j: \  b6 e; Dbuild...2 T3 X' d/ S8 k0 e4 e2 G
  : error F0002:Failed to build module
' O8 {, N/ t, v0 j         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
4 L4 ?* O1 e+ c  u) {. y: s
! A( T! O& c% E0 Y请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
5 T0 N! v" j" m+ j" [1 Qlibefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co! C3 U2 w4 u* v4 N2 X
okie referenced in function __Print
8 v: E% j& r* }libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch5 f4 f  }$ ]8 S- Y5 {5 W% i
eck_cookie@4 referenced in function __Print. ~; Z( n) n1 k0 w/ D$ u
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro: H2 `2 y' w0 B5 T
r LNK1120: 2 unresolved externals- p1 I  \: T" N# E: r4 _! \! T
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
! T; v) D3 R! _- E. x* j( p0 Q\link.EXE"' : return code '0x460'
$ f4 p4 p! @5 KStop.# ^8 W  I1 b: @4 G# Z
2 r7 C& l7 [* I% U$ N# L, `
请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-4 16:19 , Processed in 0.063276 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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