Disabling Direct Mode In LiteDAC and UniDAC
LiteDAC and UniDAC interact with SQLite in 2 approaches. The first approach is that an application uses functions of the linked SQLite library. For Windows OS it is sqlite3.dll, for Mac OS and iOS – libsqlite3.dylib, for Android – libsqlite.so. The second approach allows to connect to the database from the application directly, using so called Direct Mode. Direct Mode provides interaction with SQLite avoiding any external libraries linking. It is implemented by embedding the code of the SQLite library directly to the application. This approach allows to work with SQLite in cases, when using third-party libraries is impossible due to a number of reasons. For example, when developing applications for iOS or Mac OS, the Apple corporation prohibits deployment of any libraries along with the application.However, there are situations, when it is preferably to use the first mode. Thus, when developing applications for Android, there is no need to worry about SQLite client library presence, since it is included into this OS distribution. On the other hand, during project implementation, strict requirements may be imposed on the compiled application size. Such requirements are especially relevant for mobile development. Therefore, it is highly desirable to have an opportunity to disable modules, that won’t be used in the application, before compilation. LiteDAC and UniDAC allow to exclude the code of the SQLite client library, that implements Direct Mode, from a ready application. As a result, the size of the developed application may be decreased.To exclude support for Direct Mode from the project, do the following:Add the path to the [DAC Installation Folder]\Source] folder to the Search Path propertyCompile the application with the NOSTATIC option.Pay attention, that the Search Path option and compiler options are set for each supported platform separately!
A simple sample application using LiteDAC can show the gain in the retrieved application size:PlatformNormal CompilationCompilation with NOSTATICSize differenceWin324 268 Kb3 752 Kb516 KbWin647 292 Kb6 122 Kb1 170 KbiOS3220 540 Kb19 883 Kb657 KbiOS6422 532 Kb21 428 Kb1 104 KbAndroid20 181 Kb19 490 Kb691 KbThus, the use of the NOSTATIC conditional compilation directive allows to exclude the Direct Mode module from the compilation in cases when it is not used.Note, that if you set the Direct property to True when using the NOSTATIC directive, the ‘Direct Mode disabled’ error will occur.