最近遇到了好几次这样的问题:unresolved external symbol memset
但在程序体中又没有使用memset这个函数。第一次的时候mark掉一个while函数后不报错了,百思不得其解为什么while循环会和memset有关,但事情紧急,也就让它先过去了。今天又出现了,注释while循环已经无济于事,看来非得把它解决掉不可,就到网上搜索“edkii memset”,没想到还真有人遇到同样的问题:http://feishare.com/efimail/messages/20090320-0913-Re__EDK_DEV__Building_module_for_X64_generates_unresolved_references_to_memset_and_memcpy-_Gao__Liming_.html
从回复来看,应该是编译器在编译过程中自动优化,遇到结构体或者数组初始化的时候希望用它的memset,但EDKII又没有用compiler的lib,结果就出现这种问题。把代码中数组和结构体初始化的部分都找出来,改成主动用basememorylib里的setmem去初始化,就没有问题了!
EDKII中的memset
最新推荐文章于 2025-09-21 06:45:22 发布
本文探讨了一种常见编译错误:即使未直接使用memset函数仍出现unresolved external symbol memset的问题。文中提到,这是由于编译器优化时尝试使用memset进行结构体或数组初始化而引发的。解决方法是将所有结构体和数组初始化部分改用basememorylib中的setmem函数。
1648

被折叠的 条评论
为什么被折叠?



