Skip to content

Installing pythonocc-core alongside other C++ extensions bpy causes DLL load failures on Windows #1458

@PaulZemke

Description

@PaulZemke

Hi everyone,

I have already raised this issue within the BPY community.
https://projects.blender.org/blender/blender/issues/148944#issuecomment-1752928

What is happening is:

1 - blender ships with OpenEXR 3.3.5 as per the VFXPlatform
2 - import bpy loads all of blenders dependencies into memory, this includes the 3.3.5 copy of openexr.dll which is loaded out of [envroot]\Lib\site-packages\bpy\OpenEXR.dll
3 - import OCC.Core.IGESControl runs a long chain of imports that ends up trying to load freetype.dll from [envroot]\myenv\Lib\site-packages\OCC\Core\freetype.dll which is linked against openexr 3.2.x
4 - Freetype.dll needs the following symbol ?readMemoryMapped@IStream@Imf_3_2@@UEAAPEADH@Z
5 - This symbol does not exist in openexr.dll in 3.3.5
6 - This leads to a OS loader error where it refuses to load freetype.dll due to the missing import
7- this error ruins the load of the package and python ends up giving the following error ImportError: DLL load failed while importing _IGESControl: The specified procedure could not be found.

These two packages are just inherently binary incompatible and the core reason things like the VFX platform exist.

Image Steps to reproduce: Create a clean Python environment (e.g. Conda or venv) Install both packages: python>=3.11,<3.12.a0 conda install -c conda-forge pythonocc-core=7.9.0 pip install bpy==4.4.0

Therefore my Question: is there a possibilty to build pythonocc-core based on OpenEXR 3.3.5 ?
If that's possible, how can i do this with conda or what have i to change before starting the build and compile process.

Hence my question: Is there a way to build pythonocc-core based on the newer version OpenEXR 3.3.5?
If so, how can I do this with conda, or what do I need to change before starting the build and compilation process?

I would greatly appreciate any ideas or comments on this issue.

Best regards Paul

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions