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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。
' T  A, E6 Q3 H" C/ h$ ^   希望大家一起交流交流。/ z8 h6 c5 Q, X' ~6 q! z
   这是最简单一个程序,在屏幕上显示:  "Hello World"
+ {- f4 s$ C& \, W: ]" f: U1 Y" N   这是直接使用gST-Conout功能实现。% T1 u6 k( @/ k% l" c
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。/ ^. u" _% P5 D" o& g) }

' b+ U! `* I0 R0 P   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0. k( e& q5 |7 B/ p% @4 b
   Out->OutputString (Out, L"Hello World");  //实现输出+ a' V0 e; A" Q

5 ^, w/ n. a6 Y/ Y) \; U   小弟不知道如何调用EFI封装好的这些输出输入库。, |  M! R: G: w: |( @
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1568

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。9 H+ [0 Z* d3 j8 c/ `
加入这个PrintLibLite库后还是不行。
% b1 Q! A+ F( v, k7 Y+ W0 p' _编译执行不会有错,但他就是不显示。
( I7 Z8 f3 z$ P3 J; q现在我将print.c, print.h放到同一个目前,
2 ]6 n( t. H9 J$ q( h: F: m直接写到make.inf中。就可以显示了。$ x  x  A  `3 u6 r9 h
当然,print.h要改变一下,不然找不到函数的申明。3 U) y6 @9 k6 Z# f. c. M( U4 j
4 P& `! @( o* |3 O3 i" s8 |
明天了如何输入,但不明白为什么用printliblite不能得到输入功能。. G: I  r  t8 m% C7 }) @  I
如果是生成PrintLibLite的inf文件部分。
+ h' D5 V  r. W! x) G, E% O$ s用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。" t* O. g6 R4 K# I) ?
[defines]' Z" X3 T8 v0 g# }& S) g% B0 m, P1 w
BASE_NAME           = PrintLibLite
$ F1 R& U. E% T3 R0 Z6 XCOMPONENT_TYPE      = LIBRARY- W$ j$ H  v% E) p" k
$ U) _) I3 x/ y2 @
[sources.common]
$ v# i4 F( \9 u  BoxDraw.c
8 i* I: P6 X- Q# t: |, n- ?2 ]* t  Print.c
3 D+ f- f$ Z7 X2 B5 g. h" g3 [  Print.h
. S. A" e* A# n5 i  StdErr.c9 m5 w" {3 u) y4 Z
  Unicode\PrintWidth.h1 _1 _1 Y* c7 b! ^7 ?0 m
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1533

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz& C8 d0 }/ I# E$ a: _7 `6 o0 x; S
你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,5 s  }! a6 }" a( j
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
- T0 W, F. ~$ r3 |3 e# U, O重写一个print的东西,就可以输出。1 D2 s, Q( t  m- Y8 `
& u3 Y& j1 a/ Y$ a% q
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:2 `$ D8 L2 W# A7 P7 U4 t
build...1 T; r3 Z- ~' S, f
:error 7000:Failed to start command
' c+ h/ y. y: `. d3 B' d1 O                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]
" G% X4 M8 {: V  g5 g9 h
; y/ {! i7 s4 T1 [, _build...
5 U' _" k* X/ u' u* M7 S% F  : error F0002:Failed to build module$ [0 _7 t$ J0 {: f" d
         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
5 O1 w/ q* C% w
. l0 D# o3 ?, u5 ]& I0 m* E. |7 i请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下
. B% f; A( A0 x) B! B3 x) \libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co+ _& `  i% T" \  {) p& S
okie referenced in function __Print+ [+ t- g( q2 @- z! l: T8 v" ~
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch( p8 o" {8 M* ?
eck_cookie@4 referenced in function __Print3 B9 u( A2 s, R- I* i
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro
3 R( K8 A/ O$ Fr LNK1120: 2 unresolved externals3 I  V+ b, w- ]" r" Z  s5 I1 {
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
* q+ l, W+ i' }  h\link.EXE"' : return code '0x460'
1 q* K, d0 l. pStop.$ {0 ]" V5 L! O- U7 B

6 F& C0 o9 z/ ~' f4 W* x请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-29 02:42 , Processed in 1.630655 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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