【发布时间】:2011-01-01 02:46:25
【问题描述】:
我有一个 C 库,我将其构建为 Linux 的共享对象和带有 MinGW32 的 Windows 的 DLL。 API 依赖于几个数据文件(统计模型),我真的很想将它们与 SO/DLL 一起使用,以便部署只是一个文件。
看起来我可以使用windres 编译的“资源文件”在 Windows 上实现这一点,但是我必须为 Windows 编写一堆资源处理代码,我仍然坚持Linux 上的文件。
有没有办法在 Linux 上实现相同的功能?
更好的是,有便携式解决方案吗?
【问题讨论】:
-
类似(可能重复):stackoverflow.com/questions/1656968/… 可能还有其他,但这是一个很难搜索的主题...
-
虽然不投票赞成,但对现有问题的回答只是微不足道。
-
如果您能告诉我们您想要编写什么(便携式)代码来访问数据文件,那将非常有帮助。
fopen和fread根本不能在内存块上工作,至少在我知道的任何系统上都不能。 -
@Norman:我正在使用 C++ 来实现库(虽然它只导出 C 函数,为了 ABI 兼容性)所以我可以从二进制数据构造一个
stringstream然后它的行为就像反正一个文件。还值得注意的是,使用 avr-libc(可能还有其他针对微控制器的 libcs),您实际上可以通过提供您自己的getc()和putc()通过函数指针使fread()在任意内存块(或其他任何东西)上工作fdevopen()函数(fopen()没有操作系统就没有多大意义,更不用说文件系统了)。
标签: gcc cross-platform embedded-resource