aboutsummaryrefslogtreecommitdiff
path: root/clp-dll/README.md
blob: 5e15171bf920de50327738c90fc63d89741df687 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Using Pre-Build Clp Libraries

The COIN Linear Programming libraries are distributed as Windows DLLs that have been compiled using Microsoft's tools.  The resultant distributions can be used with modern GNU Compiler tools in the MinGW64 toolchain, including the compilers shipped with Simply Fortran.  The following documents the necessary steps to deploy and use these prebuilt libraries.

## Acquiring COIN Linear Programming binaries

The binaries for the Clp library and required dependencies can be downloaded from:

https://bintray.com/coin-or/download/Cbc

The page lists multiple builds corresponding to different platforms and compiler versions.  For simplicity and interoperability, the proper archive to download for Windows 10 64-bit is:

**Cbc-refactor-win64-msvc16-md.zip**
    
The version of the compiler (*msvc16*) does help indicate on what versions of Windows the libraries will work.  If Windows 7 compatibility is necessary, an older archive (*msvc14*) might be superior.

## Extract the Necessary Files

To use the DLLs, we will need to pull three things from the downloaded archive:

 * The DLLs themselves
 * Additional DLLs that provide dependencies
 * The static libraries for linking purposes

Within the archive, there will be four directories and some additional text files.  To use Clp, the following files should be copied *into this directory* such that they can be used with the example Simply Fortran project:

    bin\Clp-0.dll
    bin\CoinUtils-0.dll
    bin\coinasl-2.dll
    bin\coinglpk-40.dll
    lib\Clp.dll.lib
    lib\CoinUtils.dll.lib
    
The files *Clp-0.dll* and *CoinUtils-0.dll* are the base libraries implementing Clp.  These DLLs, in turn, depend on *coinasl-2.dll* and *coinglpk-40.dll* at runtime.  All four DLLs must be in the same directory as any executale that is using them.

The files *Clp.dll.lib* and *CoinUtils.dll.lib* are static libraries providing the necessary linking interface to these DLLs.  The libraries are Microsoft-format, but modern GNU tools, including those shipped with Simply Fortran, can link against this format without any changes.

The above are the only files necessary for compiling and linking against the COIN Linear Programming library from Fortran.  If using C/C++ is planned, the corresponding header files would also be necessary.

## Compiling the Clp-Fortran Interface