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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
2 m2 t; K' [! H* W5 P   希望大家一起交流交流。
  O, Y% ]7 l: v# }2 R   这是最简单一个程序,在屏幕上显示:  "Hello World"
* t0 d3 D. i" Y0 |9 V- a   这是直接使用gST-Conout功能实现。7 s5 q+ S1 I; |# b
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。% s  {$ g5 W* G  Q% M- M% L
- b. ?$ _: W- G4 i0 y
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0
& f$ G! Y3 o# q& u5 [   Out->OutputString (Out, L"Hello World");  //实现输出* X$ p1 S: f* \2 g

$ j# Q' ?- r5 L9 P/ [; F) ]   小弟不知道如何调用EFI封装好的这些输出输入库。
/ f5 N# Z6 M' i  x1 y# d   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1588

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
8 m8 G3 v3 e/ Q$ a+ C6 u8 |* z: ]加入这个PrintLibLite库后还是不行。$ U& v4 ~" F# _& v0 @. w, ~! K
编译执行不会有错,但他就是不显示。7 ?2 B3 [* f8 m0 X, |5 C2 [
现在我将print.c, print.h放到同一个目前,1 c) o/ @" f- Q/ r( h  _
直接写到make.inf中。就可以显示了。
$ s1 o  b  m" K当然,print.h要改变一下,不然找不到函数的申明。% F. t- M# {4 `9 _  S* S
, Y0 d$ s8 X6 j9 s$ M
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。
$ P' e7 \: r: S" `' [# {如果是生成PrintLibLite的inf文件部分。+ n8 Q( }. P& J* z5 b) d, O+ f
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
& J% d, Y6 p: d& Z# g& n[defines]$ d6 I3 T. b/ D; n; q
BASE_NAME           = PrintLibLite
, h6 Y8 \+ s; \8 E1 F1 ICOMPONENT_TYPE      = LIBRARY4 J; u7 q! w" Q4 K

, {8 F) J, J# e! Q1 @[sources.common]
7 Y# m! C9 v) s" o8 Q  BoxDraw.c9 R4 X* \7 Z: M5 V
  Print.c
" H" ]* V: A4 ^3 Y5 l: ?/ {  Print.h
# Q7 u4 y  G6 [6 X1 X: {  StdErr.c! }; h& ?6 ~$ o8 x9 I: C' Q
  Unicode\PrintWidth.h
$ r2 s- Q" Z2 ]1 N  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1551

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
6 x( k" a% _* Q* y你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,# P! V/ j  g5 x! m5 [
可能是其他原因,显示了但没有被看到,显示到其他的page中了。- ^$ n, N* {2 Z! [4 g1 z. H' E
重写一个print的东西,就可以输出。3 ^) D' A" i& U% s

7 C) c. r' o: fprint()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:
; z  u0 i# {- b4 Obuild...
: W- |) P- N+ V8 D6 |; } :error 7000:Failed to start command
' y/ y  T* f6 _; i3 G                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
: r; R, E+ y$ D6 h3 r( N+ @* b4 {: b! d/ {- ?
build...0 c% |2 A: k$ g
  : error F0002:Failed to build module
: E" u& ?( u- I+ q6 T         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
% w+ q8 {) E  O% u; y/ h" K! [1 Z0 {# u4 K. w* S3 `% J/ ?
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
- ~- F! ?$ U$ W$ ~libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
+ \1 f' d, Y: c- s$ eokie referenced in function __Print
  k, V9 Q# R- |1 [3 `$ Klibefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch( v* I8 ]" O8 y2 v+ v
eck_cookie@4 referenced in function __Print
# x) k. I6 y) D" b5 O1 ~D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
) n$ z8 C! _! Fr LNK1120: 2 unresolved externals7 K. M% Q* y2 ?6 R8 Y  F3 p
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN4 m0 j3 b0 w, l  }0 Q
\link.EXE"' : return code '0x460'
0 G8 ^+ F9 s* aStop.
7 k, o. b5 R0 ?: d  R$ J3 |0 P
8 Y# U$ X  v% ]) l, g4 c请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-22 01:38 , Processed in 0.212457 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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