9

I am having trouble building OpenEXR for windows 7 using CMake.

I am following directions described here

The cmd output after I run the cmake command is as follows:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

D:\openexr-2.2.0>setlocal

D:\openexr-2.2.0>cmake -DZLIB_ROOT="C:\Program Files\zlib" -DILMBASE_PACKAGE_PREFIX="d:\ilmbase-2.2.0\builds" -DCMAKE_INSTALL_PREFIX="d:\openexr-2.2.0" -G "Visual Studio 10 Win64" ..\openexr-2.2.0
-- The C compiler identification is MSVC 16.0.40219.1
-- The CXX compiler identification is MSVC 16.0.40219.1
-- Check for working C compiler using: Visual Studio 10 Win64
-- Check for working C compiler using: Visual Studio 10 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 10 Win64
-- Check for working CXX compiler using: Visual Studio 10 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found ZLIB: C:/Program Files/zlib/lib/zlib.lib (found version "1.2.8")
ILMBASE_PACKAGE_PREFIX = d:\ilmbase-2.2.0\builds
-- Performing Test HAVE_GCC_INLINE_ASM_AVX
-- Performing Test HAVE_GCC_INLINE_ASM_AVX - Failed
-- Performing Test HAVE_SYSCONF_NPROCESSORS_ONLN
-- Performing Test HAVE_SYSCONF_NPROCESSORS_ONLN - Failed
-- Configuring done
-- Generating done
-- Build files have been written to: D:/openexr-2.2.0

D:\openexr-2.2.0>

This generates the solution with many projects, however, attempting to build project ALL_BUILDS fails.

I noticed all non-compiling projects (except for porject ilmimf) complain about

error LNK1181: cannot open input file '..\IlmImf\Release\IlmImf-2_2.lib'

Trying to build project IlmImf independently reports:

error MSB6006: "cmd.exe" exited with code -1073741515.

here is the full output for project ilmimf:

1>------ Build started: Project: ZERO_CHECK, Configuration: Release x64 ------
1>Build started 06/11/2014 09:43:21.
1>InitializeBuildStatus:
1>  Creating "x64\Release\ZERO_CHECK\ZERO_CHECK.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>FinalizeBuildStatus:
1>  Deleting file "x64\Release\ZERO_CHECK\ZERO_CHECK.unsuccessfulbuild".
1>  Touching "x64\Release\ZERO_CHECK\ZERO_CHECK.lastbuildstate".
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.04
2>------ Build started: Project: IlmImf, Configuration: Release x64 ------
2>Build started 06/11/2014 09:43:21.
2>InitializeBuildStatus:
2>  Touching "IlmImf.dir\Release\IlmImf.unsuccessfulbuild".
2>CustomBuild:
2>  Building Custom Rule D:/openexr-2.2.0/IlmImf/CMakeLists.txt
2>  CMake does not need to re-run because D:\openexr-2.2.0\IlmImf\CMakeFiles\generate.stamp is up-to-date.
2>  Generating b44ExpLogTable.h
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(151,5): error MSB6006: "cmd.exe" exited with code -1073741515.
2>
2>Build FAILED.
2>
2>Time Elapsed 00:00:00.14
========== Build: 1 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

Note, I am running cmd and Visual Studio 2010 in administrator mode, tried compiling all configurations (debug, release, MinSizeRel, RelWithDebInfo) but nothing worked so far.

Vertexwahn
  • 7,709
  • 6
  • 64
  • 90
has981
  • 425
  • 4
  • 18

4 Answers4

11

I had the exact same problem, though compiling for win32. It needs dlls in lib directory created after building ilmbase. So my solution was to add that folder to windows' system path and everything works perfectly fine.

RoozyGPLFX
  • 126
  • 1
  • 7
  • Thanks so much. Was about to hurt self. – Rotem Jul 27 '15 at 15:25
  • 3
    I had this exact issue and fixed it by copying all of the DLLs into the OpenEXR/IlmImf/Debug folder. Adding the lib folder to the system path didn't work for me. – zander Aug 28 '15 at 11:05
3
Error   LNK1104 cannot open file '..\IlmImf\Debug\IlmImf-2_2.lib'   
Error   LNK1104 cannot open file '..\IlmImfUtil\Debug\IlmImfUtil-2_2.lib'

I had the same problems and I just copied Half.dll, Iex-2_2.dll and IlmThread-2_2.dll (three dll files generated by ilmbase) to b44ExpLogTable.exe folder. Then I built openexr successfully.

  • Thanks, this was perfect. I added these lines to my copy of the VFXPro99 Windows build script https://raw.githubusercontent.com/vfxpro99/usd-build-club/master/prerequisites-vc140-x64/openexr.cmd and it worked. – GaryO Dec 21 '17 at 20:32
1

When the IlmImf is builded, it will generator a "b44ExpLogTable.exe" program to generator a header file. This program b44ExpLogTable.exe needs correct dlls to run. Thus, we need to copy these related dlls into the directory or the system directory.

James Wu
  • 21
  • 5
0

I did as what RoozyGPLFX said, and overcame the "cmd.exe" exited error. But I'm still curious why just add the imbase lib path in the VS2010 project's library path doesn't work, and I think this is some kind of bugs, because it doesn't mention we should add this to system "path" in the readme file. To complement, when compiling with x64, after resolving this error, compiling IlmImf.dll can't find external symbols such as compress, compress2, uncompress which should be exported by the zlib. The error may due to the downloaded zlib version is Win32, and just recompiling the zlib source with x64 will solve this.(http://lists.gnu.org/archive/html/openexr-devel/2014-11/msg00004.html)

bomb2peng
  • 21
  • 5