我有一个C库,我为Linux构建了一个共享对象,为MinGW32构建了一个用于Windows的DLL。API依赖于几个数据文件(统计模型),我非常希望将这些文件与SO/DLL一起使用,这样部署就只是一个文件。
看起来我可以用windres编译的“资源文件”来实现这一点,但是接下来我必须为Windows编写一堆资源处理代码,而且我仍然被Linux上的文件困住了。
在Linux上有实现相同功能的方法吗?
更好的是,有没有便携的解决方案?
发布于 2010-01-04 03:23:18
在Linux和其他ELF系统上,它实际上非常简单:http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967
OS有捆绑包,所以您只需将库构建为框架并将文件放入包中即可。
发布于 2010-01-04 03:02:50
有两种可能的解决办法:
stdio.h的一个很好的替代,它将允许您使用单个API打开文件或内存块。因此,您可以轻松地将现有文件转换为C初始化数据,以便包含在DLL或大约文件中。
这是一个很好的跨平台的解决方案,但惩罚是,学习曲线的开始是相当高的。他们不容易弄清楚这些东西是如何工作的,也不容易把他们的工具集的一部分分割出来,独立于其他部分来使用。但好消息是,如果您想采用他们的U/Win系统在windows上运行Unix代码(都是同一工具集的一部分),您可以使用相同的系统创建DLL和SOs。在我自己的工作中,我使用Lua而不是AT&T,原因如下:
https://stackoverflow.com/questions/1997172
复制相似问题