2014-10-29 53 views
0

我想在LabVIEW上使用64位Linux上的Sqlite3。
Linux 64位上的SQLITE_NOMEM錯誤

我已經成功編譯了Linux 64位(RHEL6)的庫,其中包含不同版本的SQLITE源。

然後我試着用2個現有的SQLITE包裝器爲LabVIEW調用這個庫(它們已經分別用於win32/64和win32/linux32),使用一個簡單的例子。

這個簡單的例子做以下的(和在Win32/Win64上/ linux32鏡像正常工作):

  • Open connection
  • DROP TABLE IF EXISTS
  • CREATE TABLE [MyTable] ([Id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [Temperature] FLOAT NOT NULL, [Sensor] TEXT NULL);
  • INSERT INTO MyTable (Sensor, Temperature) VALUES ("%s", "%0.2f");
  • ...

隨着3.8.7版本的sqlite3的(最新的)
CREATE TABLE聲明

調用sqlite3_step時版本3.7.5的sqlite3的,我得到的LabVIEW的崩潰:
我得到SQLITE_NOMEM內存不足的錯誤在同一個函數調用

我得到了2個LabVIEW的包裝相同beaviour並檢查他們,所以我不懷疑LabVIEW代碼

任何建議?

+0

這些包裝是什麼? – 2014-10-29 18:15:42

+0

由James Powell博士和SQLite的GDataBase開發的用於LabVIEW的SQLite庫 - SAPHIR – SaphirCES 2014-10-30 07:54:59

回答

0

你應該問包裝的作者他們如何編譯SQLite(即定義他們使用)。我可以向你保證,這與SQLite本身無關。

我的一個可能性是你的程序使用了db元數據,但是沒有在編譯時定義(定義SQLITE_ENABLE_COLUMN_METADATA)。

另請參閱:http://www.sqlite.org/compile.html

+0

只有一句話:我意識到在我的distib Linux上有一個SQLite嵌入式版本(v3.6.2)。 我做了這個庫中的簡單的測試,我也得到LabVIEW中的崩潰...... 所以結果如下:3.8.7 版本,SQLITE_THREADSAFE = 1,SQLITE_ENABLE_FTS3,SQLITE_ENABLE_RTREE編譯選項(默認選項與amalgation源代碼):崩潰3.7.5版本 ,相同的編譯選項如上:SQLITE_NOMEM內存不足的錯誤 版本3.6.2,未知的編譯選項(當然默認):崩潰 也沒有用SQLITE_ENABLE_COLUMN_METADATA選項,但測試沒有改進。 – SaphirCES 2014-11-03 12:24:08