4

我正在尝试将 API 用于嵌入式系统(飞思卡尔 HCS08)上的专有接口设备,并且提供的文件包括头文件(.h)和库(.lib)。标头与我的其余代码(标准 C)编译得很好,但是当尝试链接库时,我收到内存错误,说文件可能已损坏。

我对 C 中的库的理解有些有限,因为我几乎只在嵌入式系统上工作,在这些系统中不存在诸如 stdio、文件和 dll 之类的神奇事物。但是(或任何)库会是特定于平台的吗?它是否包含完整(如果那里有任何级别)编译代码?提供的其他一些文件是 VS 项目文件,因此如果 .lib 是特定于平台的,将用于 x86-Windows 的文件链接到 8 位编译器会失败也就不足为奇了;可能只有我。

4

2 回答 2

9

.lib 文件不仅是特定于 CPU 的(无法将 HCS08 代码链接到 x86 代码),而且是特定于工具链的(CodeWarrior 不会与 SDCC 对话,GCC/binutils 不会与 Visual Studio 对话)。

于 2010-06-25T18:07:01.440 回答
1

是的 .lib 包含已编译的代码,因此它是特定于平台的。如果您有源代码,您应该能够将其重新编译到您的平台。

于 2010-06-25T18:07:39.160 回答