2012-02-07 104 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源代碼。

相關問題