2012-02-07 82 views
2

假设我有一个程序可以创建数据库文件,并从.sql文件向其中导入数据。将静态文件编译为可执行文件

如果我不想随机的.sql文件在我的目录中浮动,有没有办法将这个静态文件编译为可执行文件以供使用,而不必将其内容复制到C文件中的字符串中?定义语句也许?

+0

使用sqlite?这个数据库文件是如何创建的? – trojanfoe 2012-02-07 18:30:10

回答

0

您可以将SQL文件中的语句转换为字符串的集合(数组),将字符串放在源文件中并使用该文件构建应用程序。使用#define为索引创建名称到数组中。

+0

因此,我无法从sqlite中获取sql转储并从C中加载它,而不必将sql文件分开? – 2012-02-07 18:34:27

4

使用xxd

$ xxd -i data.sql > data.sql.c 

则包括(或复制/粘贴)所产生的C文件(不是头)

可以包括全球...

#include <stdlib.h> 
#include "data.sql.c" /* global scope */ 

...或功能范围

int foo(void) { 
# include "data.sql.c" /* function scope */ 
} 
+0

你应该包含两次数据文件吗?或者你只是表明你可以将它包含在函数内部或外部? – ugoren 2012-02-07 18:50:00

+0

不错,我决定在空间上削减一些“sed”来把它变成一个数组。 – 2012-02-07 18:50:41

+0

@ugoren:double##include只是一个例子(但是你可以复制它并且映射全局变量) – pmg 2012-02-07 21:49:12

2

查找将任意二进制文件转换为目标文件的实用程序(例如,在Linux上的bin2obj)。然后,您可以简单地将数据链接到您的exe文件,而无需将其转换为C源代码。

相关问题