gpt4 book ai didi

c - C 库中的资源路径

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:19 25 4
gpt4 key购买 nike

我正在编写一个带有一些资源的小型 C 库(即,我想在运行时编译的 openCL 代码,但我希望这个问题与图像或任意文本文件类似)。我需要在运行时加载这些资源。

如果资源随我的项目一起提供,我将能够使用 argv[0]。但是,在我目前的情况下,我的资源应该与我的图书馆一起运送。我提前知道我的资源文件相对于我的 .so 文件的位置。

如何从我的源代码中获取资源的路径?

最佳答案

通常的做法是,您在 Makefile 中定义了某种类型的 INSTALL_PREFIX 宏/您使用的任何构建系统都是在编译您的库之前由人们设置的。然后 Makefile 将其作为编译器标志传递给编译器,以便您可以在代码中使用它(本质上,您提前知道要加载的资源的完整路径,而无需对它们进行硬编码)。

如果你最终要打包你的库,你可能会想要使用像 autoconf 这样的东西。或 cmake (看看其他项目是如何做到的)。但是对于像这样简单的事情,你可以只用一个 Makefile:

生成文件:

INSTALL_PREFIX=/usr
CFLAGS=-DINSTALL_PREFIX=$(INSTALL_PREFIX)

foo.c:

FILE *f = fopen(INSTALL_PREFIX "/share/mylib/data.txt", "r");

关于c - C 库中的资源路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32729035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com