1

我的 C 应用程序依赖于一些文件来复制。这些文件是否包含在可执行文件中而不是作为独立文件?是否必须静态链接?如果重要的话,我正在使用 Eclipse CDT。

4

3 回答 3

3

有几种方法可以将文件数据链接到可执行文件中。像 Windows 这样的平台允许您将数据作为“资源”链接到可执行文件中,并提供 API 来访问这些资源(这就是图标和其他对象绑定到 Windows 可执行文件的方式)。如果您的平台支持它,这可能是最好的方法 - 对它的支持直接内置在 IDE 中。

在较低级别,您可以使用链接器将文件直接链接到可执行文件中作为可寻址对象:

最后,如果您正在处理更原始的系统,例如某些嵌入式平台,您可以通过将文件转换为 C 字节数组的源代码来运行文件:

于 2010-10-11T01:44:59.437 回答
1

除非您做一些特别的事情,否则这些文件不会包含在您的可执行文件中。您是否有理由无法将文本文件与您的应用程序一起分发?

如果要将文件烘焙到可执行文件中,可以将它们烘焙成常量字符串:

const char myTextFileData[] = "the text of the file goes here";

当然,您必须将文本文件预处理为 C 源文件(记住正确转义引号、反斜杠、换行符和其他控制字符)。或者,您可以使用工具objcopy将文件数据直接转换为目标文件,然后将该目标文件链接到您的可执行文件中。

于 2010-10-11T01:40:20.567 回答
0

不,可执行文件仅包含编译器和链接器的输出。您的程序所需的任何辅助文件都必须单独打包。

于 2010-10-11T01:35:12.300 回答