Windows下编译项目 ckcore ckfilesystem

发布时间 2023-08-17 14:35:20作者: lydstory

 

该项目是用来生成iso镜像文件的,类似于UltraISO,好处就是开源滴,

我为什么要跟它们打交道,说来也简单:我们一开始用UltraISO给我们的操作系统发行版制作启动光盘,但是发现这样做好的光盘头部总是不能被我们的biso(UEFI BISO)识别,但是因为系统的启动过程是把若干文件镜像加载到内存,然后从biso中获取控制权,我们要解决的就是如何识别这几个文件,我的前任们提出了一个比较简单的方法,那就是放弃从光盘信息头中提取文件的思路,直接在制作光盘时把文件的起始地址(用一个叫逻辑扇区地址(LBA)的东西来表示)以及偏移写入光盘的指定位置(这个位置可以保证不会破坏光盘数据,比如,是规范中约定预留部分),于是我们每次制作光盘的流程如下:首先用UltraISO制作原始版本,并查看相应文件的LBA以及长度,然后WinHex改写光盘约定位置的内容。每次人工来改虽说不是麻烦,但毕竟不符合程序员精神。

几个注意点:

   ckcore、ckfilesystem编译成Lib文件,src/sample路径下有一个 main.cc ,是一个简单的udf 写录程序,编译选项一定要统一, 例如我们此处选 MD(多线程静态库),那么库应用程序应该也一致;

  ckfilesystem 依赖 ckcore,记得导入lib,可以在链接选项中附加库,也可以#program comment(lib,’yourlib.lib’) 

  项目是跨平台的,在windows VS下编译时,记得选择 Windows标准库,注意不要选择 UNICODE字符 ,否则1)会产生大量链接错误  2)因为字符编码问题无法识别目录名,原因可以分析 ckcore/type.hh ;

  还需要注释掉filetree.cc 中涉及到 的??wstring 类型与string的不匹配??(对程序逻辑的影响还未分析)

  

转载于:https://www.cnblogs.com/diving/archive/2012/09/20/2696142.html