Installation 如何将C程序与辅助数据文件捆绑在一起?

Installation 如何将C程序与辅助数据文件捆绑在一起?,installation,package,Installation,Package,如果这个问题是转帖,我很抱歉。看起来应该是这样的 但我在网络上找到解决方案时遇到了极大的困难 我写了一个C程序,在运行期间需要读入一些辅助文件 它的运作。我通常只是把这些文件放在和 编译后的可执行文件,然后使用 相对路径 但是,这仅在用户的工作目录相同时有效 作为存储可执行文件的文件夹。这对我们来说是不够的 我的目的是,因为我希望用户能够从 其他目录 包装跨越多个应用程序的程序的标准方式是什么 单可执行二进制文件?该程序旨在供附近的用户使用 不懂电脑的人,我正在寻找一个最接近电脑的人 点击解决方

如果这个问题是转帖,我很抱歉。看起来应该是这样的 但我在网络上找到解决方案时遇到了极大的困难

我写了一个C程序,在运行期间需要读入一些辅助文件 它的运作。我通常只是把这些文件放在和 编译后的可执行文件,然后使用 相对路径

但是,这仅在用户的工作目录相同时有效 作为存储可执行文件的文件夹。这对我们来说是不够的 我的目的是,因为我希望用户能够从 其他目录

包装跨越多个应用程序的程序的标准方式是什么 单可执行二进制文件?该程序旨在供附近的用户使用 不懂电脑的人,我正在寻找一个最接近电脑的人 点击解决方案

非常感谢。 -帕特里克



非常感谢您的回复!这给了我一个开始的地方。我将搜索每个操作系统的可执行路径。

这取决于您的操作系统。Windows为此提供了名为resources()的东西,允许您将文件与可执行文件捆绑在一起。在任何平台上实现这一点的最简单方法可能是将数据包含在数组中。如果您需要在运行时编辑并更改该数据,您可以向数组中添加标识符(例如
char data[]={'I'、'D'、'E'、'N'、'T'、/*您的数据*/、'I'、'D'、'E'、'N'、'T'、'1'}
),然后在运行时在二进制文件中找到该数组并更改其内容。我知道这是一个非常糟糕的解决方案,但它可能会正常工作。

这取决于您的操作系统。Windows为此提供了名为resources()的东西,允许您将文件与可执行文件捆绑在一起。在任何平台上实现这一点的最简单方法可能是将数据包含在数组中。如果您需要在运行时编辑并更改该数据,您可以向数组中添加标识符(例如
char data[]={'I'、'D'、'E'、'N'、'T'、/*您的数据*/、'I'、'D'、'E'、'N'、'T'、'1'}
),然后在运行时在二进制文件中找到该数组并更改其内容。我知道这是一个非常糟糕的解决方案,但它可能会起作用。

这个问题很大程度上取决于您的操作系统,既取决于您如何打包程序,也取决于您应该将代码需要查看的文件放在何处。这不是打包,而是查找可执行路径,以便从程序中引用它。“这取决于操作系统。”尤金内什说。然而,在一些操作系统上,你只是没有把数据文件放在与可执行文件相同的目录中。我敢打赌,如果他们的
/usr/bin
中有一堆数据文件,人们会不高兴的。@MattiVirkkunen是的,这是一个考虑因素。你能将数据捆绑到可执行文件本身吗?Windows有这方面的资源;在Linux上,您仍然可以将它们作为数组包含。这个问题非常依赖于您的操作系统,既取决于您如何打包程序,也取决于您应该将代码需要查看的文件放在何处。这不是打包,而是查找可执行路径,以便从程序中引用它。“这取决于操作系统。”尤金内什说。然而,在一些操作系统上,你只是没有把数据文件放在与可执行文件相同的目录中。我敢打赌,如果他们的
/usr/bin
中有一堆数据文件,人们会不高兴的。@MattiVirkkunen是的,这是一个考虑因素。你能将数据捆绑到可执行文件本身吗?Windows有这方面的资源;在Linux上,您仍然可以将它们作为数组包含。