# eXtremeDB Windows Dynamic Link Libraries - target/bin.so

> As explained in the eXtremeDB Windows Libraries page, the `\target\bin.so` directory under your eXtremeDB installation root directory contains a number of Dynamic Link Libraries (DLLs) that can be loaded into C/C++, Python, Java and .NET Framework applications at run time. As mentioned in the static libraries page, each library is provided in two forms: debug and release mode. The Dynamic Link Libraries are described below (only release mode filenames are shown). (Please refer to the following link for descriptions of additional libraries to support extension module features.)

> # Core Libraries

> To link dynamically, the following two libraries are mandatory; they must be linked with any application:

> mcoplatform.dll | Contains the system independence layer and low level primitives
> mcoloader.dll | Contains a loader for eXtremeDB core. It chooses proper the runtime variant and loads it dynamically

> The libraries listed below are runtime variants that can be called in one of the following ways:

> - By explicitly calling `mco_core_load()` before calling `mco_runtime_start()`
> - By implicitly calling `mco_core_load()` in the call of `mco_runtime_start_ex()`
> - By using a combination of the following environment variables which are detected in the call of `mco_runtime_start():`

>   - `MCO_STORAGE` - Mandatory parameter; values `IM` or `MEMORY` will load the `IM` runtime; otherwise the disk runtime will be loaded

>   - `MCO_TRANSMGR` - Optional parameter; value `MURSIW` will load the ``MURSIW` transaction manager`, otherwise the ``MVCC` transaction manager` will be loaded

>   - `MCO_MEMDEV` - Optional parameter; value `SHARED` will load a shared memory device, otherwise a conventional memory device will be loaded

>   - `MCO_RUNTIME_PATH` - Overrides the eXtremeDB library search path

> The runtime variant libraries are:

> mcocore_mursiw.dll | The `MURSIW` transaction manager for conventional memory databases
> mcocore_mursiw_shm.dll | The `MURSIW` transaction manager for shared memory databases
> mcocore_disk_mursiw_.dll | The `MURSIW` transaction manager for persistent databases using conventional memory for metadata
> mcocore_disk_mursiw_shm_.dll | The `MURSIW` transaction manager for persistent databases using shared memory for metadata
> mcocore_mvcc.dll | The `MVCC` transaction manager for conventional memory databases
> mcocore_mvcc_shm.dll | The `MVCC` transaction manager for shared memory databases
> mcocore_disk_mvcc_.dll | The `MVCC` transaction manager for persistent databases using conventional memory for metadata
> mcocore_disk_mvcc_shm_.dll | The `MVCC` transaction manager for persistent databases using shared memory for metadata

> ## Optional libraries

> In addition to the variant libraries listed above, the following libraries can be dynamically loaded using `mco_core_load()`to support optional features:

> ### Sequence Data Type Support [Optional]

> These libraries provide basic ``sequence`` data type operations such as reading and inserting `sequence` data. All applications that use the `sequence` data type must load one of the following libraries:

> mcoseq.dll | `Sequence` data type API support
> mcoseqrle.dll | `Sequence` data type with RLE compression API support

> ### Analytics Function Library Support [Optional]

> If, in addition to basic sequence operations, mathematics and statistical functions that operate on sequences are required, applications must load one of the following libraries:

> mcoseqmath.dll | Mathematical and statistical functions operating on `sequences`
> mcoseqrlemath.dll | Mathematical and statistical functions operating on `sequences` with RLE compression

> ### Active Replication Fabric Support [Optional]

> eXtremeDB Active Replication Fabric packages provide the following libraries. All applications that use ARF (IoT) APIs must load both:

> mcoiotcomm.dll | IOT communication library
> mcoiotrepl.dll | IOT replication

> ### Transaction Logging APIs [Optional]

> The eXtremeDB Transaction Logging APIs are implemented in the following library. All applications that use the Transaction Logging API must load:

> mcolog.dll | Transaction Logging API

> ### Backup [Optional]

> The following library is provided for applications using the incremental backup feature to backup and restore databases on persistent media:

> mcobackup.dll | Incremental backup and restore for in-memory and persistent databases

> ### Serialization [Optional]

> The following library is provided for applications using the `save` / `load` features to store and retrieve database or class snapshots on persistent media. (Note that this functionality does not require file system wrappers. The `save` / `load` features use an abstract stream (implemented by the application) to transfer data to the operating system.)

> Serialization capability is implemented in the following library:

> mcoseri.dll | Serialization (save and load) for all-in-memory databases

> ### Uniform Data Access (UDA) [Optional]

> For applications that use the Uniform Data Access functions the following library is required:

> mcouda.dll | Required if UDA APIs are used

> ### HTTP Database Viewer [Optional]

> The HTTP Viewer requires the following two libraries:

> mcoews.dll | HTTP server implementation
> mcohv.dll | HTTP Database Viewer (without SQL capability)

> ### Cryptography [Optional]

> The Database Encryption feature is integrated into mcoplatform.dll (mcoplatform_debug.dll) currently.

> ## Extension module libraries

> In addition to the optional features libraries listed above, there are dynamic libraries for the eXtremeDB extension modules described in page Extension Module Windows Dynamic Link Libraries.

> # Python Subdirectory

> eXtremeDB also provides additional disk manager DLLs for Python in the `\target\bin\python` directory. It contains the following Python Dynamic Load libraries:

> eXtremeDB_disk_mursiw.pyd | The MURSIW transaction manager for persistent and hybrid databases using conventional memory
> eXtremeDB_disk_mursiw_shm.pyd | The MURSIW transaction manager for persistent and hybrid databases using shared memory
> eXtremeDB_disk_mvcc.pyd | The MVCC transaction manager for persistent and hybrid databases using conventional memory
> eXtremeDB_disk_mvcc_shm.pyd | The MVCC transaction manager for persistent and hybrid databases using shared memory

> # Java DLLs

> The following Java DLLs are loaded at runtime according to Database.Parameters settings:

> extremedbjni_mursiw.dll | The MURSIW transaction manager for In-Memory database applications using conventional memory
> extremedbjni_mursiw_shm.dll | The MURSIW transaction manager for In-Memory database applications using shared memory
> extremedbjni_disk_mursiw.dll | The MURSIW transaction manager for Persistent and Hybrid database applications using conventional memory
> extremedbjni_disk_mursiw_shm.dll | The MURSIW transaction manager for Persistent and Hybrid database applications using shared memory
> extremedbjni_mvcc.dll | The MVCC transaction manager for In-Memory database applications using conventional memory
> extremedbjni_mvcc_shm.dll | The MVCC transaction manager for In-Memory database applications using shared memory
> extremedbjni_disk_mvcc.dll | The MVCC transaction manager for Persistent and Hybrid database applications using conventional memory
> extremedbjni_disk_mvcc_shm.dll | The MVCC transaction manager for Persistent and Hybrid database applications using shared memory

> # .NET Framework DLLs

> The .NET Framework wrapper implementing most of the eXtremeDB in-memory database functionality is contained in the following library with is required for all .NET Framework applications:

> extremedb4net.dll | Main database functions

> In addition, one of the following .NET Framework DLLs are loaded at runtime according to Database.Parameters settings:

> extremedb4net_mursiw.dll | The MURSIW transaction manager for In-Memory database applications using conventional memory
> extremedb4net_mursiw_shm.dll | The MURSIW transaction manager for In-Memory database applications using shared memory
> extremedb4net_disk_mursiw.dll | The MURSIW transaction manager for Persistent and Hybrid database applications using conventional memory
> extremedb4net_disk_mursiw_shm.dll | The MURSIW transaction manager for Persistent and Hybrid database applications using shared memory
> extremedb4net_mvcc.dll | The MVCC transaction manager for In-Memory database applications using conventional memory
> extremedb4net_mvcc_shm.dll | The MVCC transaction manager for In-Memory database applications using shared memory
> extremedb4net_disk_mvcc.dll | The MVCC transaction manager for Persistent and Hybrid database applications using conventional memory
> extremedb4net_disk_mvcc_shm.dll | The MVCC transaction manager for Persistent and Hybrid database applications using shared memory