ODA IFC SDK Developer's Guide > Get Started with IFC SDK > Download ODA IFC SDK
Download IFC SDK

The most recent release can be downloaded from Member Downloads.

Only registered Open Design Alliance members can access the download page. For more information regarding Open Design Alliance membership, please see http://www.opendesign.com/join.

IFC SDK releases are available as downloadable archives (.zip or tar.gz files depending on the platform). When an archive name does not include "dll", the archive contains static libraries.

To obtain the correct libraries for your compiler on your platform:

  1. Create a directory on your computer for the IFC SDK libraries, header files, and documentation.
  2. Download IFC SDK libraries for your operating system and compiler.
  3. Extract the libraries and documentation, making sure to preserve the directory structure stored in the compressed files. Examples and samples are included in the archives.

    For a detailed description of archive contents, see IFC SDK Archive Contents.

IFC SDK binary archives are provided for all dynamic and static platforms supported by ODA Software.

Archive File Name Structure

The downloadable archive file names consist of the IFC SDK prefix (IFC) and platform-specific information (listed below).

Archives for Windows

Signature Description
Compiler Version
  • Microsoft Visual Studio:
    • vc14 — Microsoft Visual C++ 2015.
    • vc14xp — Microsoft Visual C++ 2015 with WinXP support.
    • vc15 — Microsoft Visual C++ 2017.
    • vc16 — Microsoft Visual C++ 2019.
Platform
  • amd64 — Libraries built for the x86 AMD64 platform.
Library Type
  • Dynamic libraries built with Microsoft Visual C++:
    • dll — Dynamic multi-threading libraries (release configuration).
    • dlldbg — Dynamic libraries with debug information (debug configuration).
  • Static libraries built with Microsoft Visual C++:
    • ml — Static single-threading libraries (release configuration).
    • mldbg — Static single-threading libraries with debug information (debug configuration).
    • mt — Static multi-threading libraries (release configuration).
    • mtdbg — Static multi-threading libraries with debug information (debug configuration).
  • Both static and dynamic libraries built with Microsoft Visual C++:
    • md — Static and dynamic multi-threading libraries (release configuration).
    • mddbg — Static and dynamic multi-threading libraries with debug information (debug configuration).
  • rwd — Release built with runtime debug information (useful for reproducing certain types of runtime problems).

Choosing a Downloadable Archive for Windows Platforms

All IFC SDK executables are built with dependency on the C/C++ runtime library (CRT), which implements basic functionality, such as input/output operations, memory management, string manipulation, and so on.

There are two ways of linking the CRT library:

  • Static linking.
  • Dynamic linking.

And there are three types of CRT libraries:

  • Static single-threaded.
  • Static multi-threaded.
  • Dynamic link multi-threaded.

Each type can be represented with a release or debug configuration.

To get a successfully built custom application based on IFC SDK, the CRT library used by the application must match the CRT library used by the IFC SDK library. In other words, custom applications should use the same compiler switch that was used to build IFC SDK. The table below details compiler options used for different library configurations.

Library Type and Configuration Compiler Switch CRT Library File Name Macros Name
Single-Threaded /ML LIBC
Single-Threaded Debug /MLd LIBCD _DEBUG
Static Multi-Threaded /MT LIBCMT _MT
Static Multi-Threaded Debug /MTd LIBCMTD _MT, _DEBUG
Dynamic Link (DLL) /MD MSVCRT _MT, _DLL
Dynamic Link (DLL) Debug /MDd MSVCRTD _MT, _DLL, _DEBUG

Downloadable archives are available that support each of these reusable CRT library types:

  • Downloadable archives with Static CRT contain the mt suffix in their names. For example, ifc_vc16mt.zip contains the IFC SDK archive with Static CRT, built with Microsoft Visual Studio 2019.

    This IFC SDK configuration requires that you use an /MT switch to build a custom application.
  • Downloadable archives with Dynamic Link Multi-Threaded CRT contain the dll suffix in their names. For example, Ifc_vc19dll.zip contains the IFC SDK archive with the Dynamic Link Multi-Threaded CRT, built with Microsoft Visual Studio 2019.
    This IFC SDK configuration requires that you use an /MD switch to build a custom application.
  • Downloadable archives with Static/Dynamic CRT contain the md suffix in their names. For example, Ifc_vc11md.zip contains the IFC SDK archive with both Static Multi-Threaded and Dynamic Link Multi-Threaded CRT, built with Microsoft Visual Studio 2012.
    This IFC SDK configuration also requires that you use an /MD switch to build a custom application, but it allows you to mix the static and DLL (dynamic) reusable CRT library types.

When using compiler switches to build a custom application or DLL:

  • The /MD switch causes a custom application or DLL to use the Multi-Threaded and DLL versions of the CRT library. It defines _MT and _DLL macros within an application and causes the compiler to place the library name MSVCRT.lib into the .obj file.
    Custom applications and DLLs compiled with this option are statically linked to MSVCRT.lib, which contains code to resolve external references.

    Actual working code is contained in MSVCR90.DLL. This file must be available at runtime.
  • The /MT switch causes a custom application or DLL to use the Static Multi-Threaded version of the CRT library. It defines the _MT macro within an application and causes the compiler to place the library name LIBCMT.lib into the .obj file. In this case, the linker uses LIBCMT.lib to resolve external symbols.

Note that the question of choosing an IFC SDK downloadable archive is the same question of choosing a CRT library linking method: dynamic or static. The chosen method determines whether a custom application or DLL will have any external DLL dependencies.

Archives for Linux

Signature Description
Platform
  • lnxX86 — Libraries built for the 32-bit Linux platform.
  • lnxX64 — Libraries built for the 64-bit Linux platform.
GNU Compiler Collection Version
  • 4.8 — GCC version 4.8.
  • 4.9 — GCC version 4.9.
  • 5.2 — GCC version 5.2.
  • 5.3 — GCC version 5.3.
  • 6.3 — GCC version 6.3.
  • 7.2 — GCC version 7.2.
  • 8.3 — GCC version 8.3.
Library Type
  • dll — Shared libraries (*.so files).
  • pic — Static libraries (*.a files) compiled with the Position Independent Code option.
  • If dll or pic are not specified — Static libraries (*.a files)

Archives for Macintosh

Signature Description
Platform
  • macOsX_x64 — Libraries built for the 64-bit Mac platform.
Version number of macOS that the libraries are built for
  • 10.12 — libraries for macOs version 10.12.
  • 10.13 — libraries for macOs version 10.13.
  • 10.14 — libraries for macOs version 10.14.
  • 10.15 — libraries for macOs version 10.15.
Library Type
  • dll — Shared libraries (*.so files).
  • pic — Static libraries (*.a files) compiled with the Position Independent Code option.
  • If dll or pic are not specified — Static libraries (*.a files).

IFC SDK Archive Contents

Item (folder or file) Operating system Description
bin
Non-Windows IFC SDK binary executable and library files. Files are placed in the appropriate subfolder. The name of the subfolder depends on the specific platform, compiler version, and processor architecture.
build
Non-Windows Contains CMake configuration files for building IFC SDK executable and library files.
exe
Windows IFC SDK binary executable and library files for Windows platforms. Files are placed in the appropriate subfolder. The name of the subfolder depends on the specific platform, compiler version, and processor architecture.
Ifc
All IFC SDK binary executable and library files. Files are placed in the appropriate subfolder. The name of the subfolder depends on the specific platform.
Examples
All This folder contains the source code of IFC SDK example applications. See the Use ODA IFC SDK Sample Applications topic for additional information about samples.
Extensions
All Contains the source code of IFC SDK extension modules.
Include
All IFC SDK header files, which represent its public API.
Kernel
All IFC SDK header files from the Kernel SDK. This folder also contains the source code for Kernel SDK extensions used in the IFC SDK.
KernelBase
All IFC SDK header files from the base part of the Kernel SDK.
lib
All IFC SDK library files and other binary libraries the IFC SDK depends on.
Platforms
Win Project files generated with CMake for the Windows platform. Contains two solutions:
  1. IFC_vc*_ex — includes example application, extensions and import/export functionality.
  2. IFC_vc*_ext — includes modules from Common Application sub-folder and related example applications.

vc* — the suffix that determines the compiler version and platform-specific information. For example, the suffix vc16_amd64dll means that the IFC SDK was built for a 64-bit platform with the Visual C++ 2019 compiler.

Files are placed in the appropriate subfolder. The name of the subfolder depends on the specific platform, compiler version, and processor architecture.

ThirdParty
All Contains third-party files (source code, headers, binary files, etc.) the IFC SDK depends on.
CMakeLists.txt
Non-Windows A file that contains instructions for CMake utility that creates make-files for building IFC SDK binary files.
configure
Non-Windows A utility that generates make-files basing on a CMake configuration.
platform.txt
All A text file that contains the platform-dependent information:
  • Operating system.
  • Processor architecture (bit capacity).
  • Compiler version information.
  • ODA Platform version.
  • Build number.

Using Multiple Configurations

You can unpack different archives for the Windows platform into the same folder. This is convenient, for example, to build Release and Debug configurations using the same source, or even to have configurations linked dynamically and statically.

Unpacking other archives to the same folder will cause warnings because there are some duplicated files in both archives. This is okay; duplicated files are the same.

Important! Always use empty folders when upgrading IFC SDK versions. Mixing files from different IFC SDK versions may cause problems.

See Also

Activating ODA Products

Create Your First IFC SDK Application

Supported Platforms

Copyright © 2002 – 2020. Open Design Alliance. All rights reserved.