# mco_runtime_start_ex

> Dynamically load the specified libraries and start the database runtime.

### Prototype

        MCO_RET mco_runtime_start_ex(mco_bool disk,
                        mco_bool mvcc,
                        mco_bool shmem,
                        const char *sync_library,
                        const char *memory_library,
                        const char *runtime_path);

### Arguments

disk | Set `true` to dynamically load the appropriate persistent database libraries
mvcc | Set `true` to dynamically load the MVCC transaction manager library; otherwise load the MURSIW library
shmem | Set `true` to dynamically load the shared memory library; otherwise load the conventional memory library
sync_library | If non null, load the synchronization library from the specified file and path
memory_library | If non null, load the memory library from the specified file and path
runtime_path | If non null, load the runtime library from the specified file and path

### Description

> This function calls `mco_core_load()` to load the appropriate dynamic libraries according to the specified parameters. Then it starts the eXtremeDB runtime with the same operations as `mco_runtime_start()`.

### Return Codes

MCO_S_OK | The database was created successfully
MCO_E_SHM_ERROR | Failed to allocate shared memory. (If using a shared memory database.)

### Example

The following code snippet would dynamically load the disk manager, the `MURSIW` transaction manager, and conventional memory libraries:

        Application snippet:

        int main(int argc, char* argv[])
        {
            mco_db_h	db;
            MCO_RET	rc;
            mco_device_t       dev;
            mco_db_params_t    db_params;

            if( (rc = mco_runtime_start_ex(true, false, false, null, null, null)) != MCO_S_OK)

                exit(-1);

            ...
            mco_runtime_stop();
        }