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

EFI 编程交流

[复制链接]
发表于 2008-6-24 16:30:52 | 显示全部楼层 |阅读模式
小弟最近在学UEFI, 用EDK尝试着写点东西。- P  [* ]) R9 {1 i
   希望大家一起交流交流。
8 N1 t6 C$ j7 A   这是最简单一个程序,在屏幕上显示:  "Hello World") A& F+ t, u$ f; ^) ]/ p
   这是直接使用gST-Conout功能实现。3 V  b8 b3 B2 M' v0 T- W1 f0 Z
   但使用PrintXY( 3, 4, NULL, NULL, L"Hello World");却无法实现。3 i6 j( q! p( v7 R1 T' W  j& N
* Q& r: e& n0 _% ], D0 g3 z4 X
   PrintXY(3, 4, NULL, NULL, L"JANY lu");    //debug发现执行后的返回值为 0" d% S% s! v, M( c+ s
   Out->OutputString (Out, L"Hello World");  //实现输出
5 w* ]* ]& W3 G6 |/ v! y2 L, }
) l4 I( c5 H  y' v5 Z5 r   小弟不知道如何调用EFI封装好的这些输出输入库。2 R6 d& L; `! {- z5 `$ {
   希望大侠指点一下。

Jany.rar

2.56 KB, 下载次数: 1518

EFI Hello World

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

使用道具 举报

 楼主| 发表于 2008-6-26 21:37:39 | 显示全部楼层
问题解决了。
3 `* ?  d7 I/ F/ p( X0 [加入这个PrintLibLite库后还是不行。3 w$ n5 a2 h$ C0 M+ S1 b
编译执行不会有错,但他就是不显示。
* q% X8 y. R- Y现在我将print.c, print.h放到同一个目前,
! P! a7 B. P$ X( T1 }' x直接写到make.inf中。就可以显示了。2 `# h1 Y4 K- Q/ L: D
当然,print.h要改变一下,不然找不到函数的申明。# d9 u5 U* ]+ K: M6 i

1 N0 d* k) o" `6 E+ E明天了如何输入,但不明白为什么用printliblite不能得到输入功能。% ?# C& K$ F% B% `1 {
如果是生成PrintLibLite的inf文件部分。0 k' C! D: P3 R! m
用不成功,只能自己改变。---这个想法是在下班路骑自行车时想到的。
7 Y* b, |; C5 l+ b[defines]
0 A3 Q- f8 G# R2 W" y8 WBASE_NAME           = PrintLibLite6 l$ g: v5 t+ U2 j
COMPONENT_TYPE      = LIBRARY1 f9 H/ y9 t5 e. `- U
; Q0 u( X4 e- H+ P4 }+ m
[sources.common]8 v# j9 q) _$ M: t* B" H
  BoxDraw.c' w9 K1 W+ F, G- A: i" }
  Print.c
  I4 {% b$ d  Y, j, T  Print.h$ i" n! b8 [1 ]& i+ h8 m' |$ h
  StdErr.c& M' D7 f, P3 A' k- a5 g3 ]1 N  e: [
  Unicode\PrintWidth.h+ K% `0 ?" f# z2 L
  Unicode\SPrint.c

Owen.rar

9.35 KB, 下载次数: 1486

EFI Print

回复

使用道具 举报

发表于 2008-6-27 11:19:46 | 显示全部楼层
lz
. D6 T+ @6 r' g9 }8 t  W你的printXY函数是不是用Grouph 这个protocol去直接画屏幕?
回复

使用道具 举报

 楼主| 发表于 2008-6-29 15:26:36 | 显示全部楼层
printxy不是在grouph中的,我加载过,没有效果.看source code,这具函数是在PrintLibLite中,. m+ z2 i5 y4 f, v) ~) @
可能是其他原因,显示了但没有被看到,显示到其他的page中了。
. g5 {$ V1 N9 I3 p重写一个print的东西,就可以输出。$ ]- s- \- [5 U& o
; D" S8 C" P) f+ ^$ f
print()是在grouph,可以正常使用。
回复

使用道具 举报

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

回复 2# bini 的帖子

高手,请教你一个很简单的问题,用EDK编译hello world的时候报的错误,找了很久没找出原因,希望你不吝赐教! 错误如下:, E5 [6 G# ]6 P9 g+ I% V
build...
) i7 q# t0 q5 O, u5 x :error 7000:Failed to start command7 B- \: r4 i8 |/ V: N+ X
                C:\Program Files\VS 9.0\VS\bin\nmake.exe /nologo tbuild [我的路径中的PeiMemoryAllocationLib]3 P  K6 g+ _, G, |- P0 a: X
% c1 H- `# k5 n
build...6 F$ v1 ]# V4 Q; x9 j: {* w
  : error F0002:Failed to build module
2 Y6 }1 f# u$ B) f         我的路径\PeimemoryAllocationLib.inf[IA32,VS2008x86,debug]
+ i3 p5 {1 `6 ]! M% b) T% |2 }0 i8 L/ H2 s: @$ p- Z
请指教啊
回复

使用道具 举报

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

回复 2# bini 的帖子

南狼,你好,请教你一个问题,我用Print打印东西,但是提示报错,并且我已经将efilib这个库包含了,错误如下( ~  `# N$ t7 D
libefi.lib(print.obj) : error LNK2019: unresolved external symbol ___security_co
$ m- r0 E' T" j( vokie referenced in function __Print/ h: b6 z" ^, g
libefi.lib(print.obj) : error LNK2019: unresolved external symbol @__security_ch
" ?6 Y' N& X9 G' P; Jeck_cookie@4 referenced in function __Print% S) [9 {2 O7 j/ u4 x
D:\UEFI_software\original\Build\NT32\DEBUG_VS2008\IA32\ShowTime.dll : fatal erro! i4 Z. i' Y- T
r LNK1120: 2 unresolved externals' U- d) k1 s5 ?: d$ j$ L
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN1 x# `. C# I8 M% [: C
\link.EXE"' : return code '0x460'' u, ]; h% K7 ?& R/ Z( F6 [
Stop.
' K: M% A/ C3 ?2 F) }0 l
7 N7 S* `# W5 u7 N& D! _$ ^5 w/ C请指教啊!!!!!!!!!!!!!多谢!
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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