Я пробую этот отправленный пример для разработчиков на С ++. У меня установлена последняя версия Windows SDK, и я использую Dec C ++. У меня есть файлы include на C: \ Dev-Cpp \ include. У меня естьпопытался скопировать esent.h в мой каталог include, но я все еще получаю очень много ошибок. Вот и весь код.
#undef JET_VERSION
#define JET_VERSION 0x0501
#include <stdio.h>
#include <string.h>
#include <esent.h>
int main(int argc, char * argv[]) {
JET_INSTANCE instance;
JET_SESID sesid;
JET_DBID dbid;
JET_TABLEID tableid;
JET_COLUMNDEF columndef = {0};
JET_COLUMNID columnid;
// Initialize ESENT. Setting JET_paramCircularLog to 1 means ESENT will automatically
// delete unneeded logfiles. JetInit will inspect the logfiles to see if the last
// shutdown was clean. If it wasn't (e.g. the application crashed) recovery will be
// run automatically bringing the database to a consistent state.
Call(JetCreateInstance(&instance, "instance"));
Call(JetSetSystemParameter(&instance, JET_sesidNil, JET_paramCircularLog, 1, NULL));
Call(JetInit(&instance));
Call(JetBeginSession(instance, &sesid, 0, 0));
// Create the database. To open an existing database use the JetAttachDatabase
// and JetOpenDatabase APIs
Call(JetCreateDatabase(sesid, "edbtest.db", 0, &dbid, JET_bitDbOverwriteExisting));
// Create the table. Meta-data operations are transacted and can be performed concurrently.
// For example, one session can add a column to a table while another session is reading
// or updating records in the same table.
// This table has no indexes defined, so it will use the default sequential index. Indexes
// can be defined with the JetCreateIndex API.
Call(JetBeginTransaction(sesid));
Call(JetCreateTable(sesid, dbid, "table", 0, 100, &tableid));
columndef.cbStruct = sizeof(columndef);
columndef.coltyp = JET_coltypLongText;
columndef.cp = 1252;
Call(JetAddColumn(sesid, tableid, "column1", &columndef, NULL, 0, &columnid));
Call(JetCommitTransaction(sesid, JET_bitCommitLazyFlush));
// Insert a record. This table only has one column but a table can have slightly over 64,000
// columns defined. Unless a column is declared as fixed or variable it won't take any space
// in the record unless set. An individual record can have several hundred columns set at one
// time, the exact number depends on the database page size and the contents of the columns.
Call(JetBeginTransaction(sesid));
Call(JetPrepareUpdate(sesid, tableid, JET_prepInsert));
char * message = "Hello world";
Call(JetSetColumn(sesid, tableid, columnid, message, strlen(message)+1, 0, NULL));
Call(JetUpdate(sesid, tableid, NULL, 0, NULL));
Call(JetCommitTransaction(sesid, 0)); // Use JetRollback() to abort the transaction
// Retrieve a column from the record. Here we move to the first record with JetMove. By using
// JetMoveNext it is possible to iterate through all records in a table. Use JetMakeKey and
// JetSeek to move to a particular record.
Call(JetMove(sesid, tableid, JET_MoveFirst, 0));
char buffer[1024];
Call(JetRetrieveColumn(sesid, tableid, columnid, buffer, sizeof(buffer), NULL, 0, NULL));
printf("%s", buffer);
// Terminate ESENT. This performs a clean shutdown.
JetCloseTable(sesid, tableid);
JetEndSession(sesid, 0);
JetTerm(instance);
return 0;
}
Что мне нужно сделать, чтобы мой код успешно компилировался?.
Вот некоторые из ошибок компилятора:
g++.exe "C:\dev\esent-example.cpp" -o "C:\dev\esent-example.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
In file included from C:/Dev-Cpp/include/specstrings.h:11,
from C:/Dev-Cpp/include/esent.h:27,
from C:\dev\esent-example.cpp:5:
C:/Dev-Cpp/include/sal.h:23:28: linux/spinlock.h: No such file or directory
C:/Dev-Cpp/include/sal.h:25:21: asm/pal.h: No such file or directory