У меня возникают проблемы при сборке OpenEXR для Windows 7 с использованием CMake.
Я следую инструкциям Вот
Вывод команды cmd после запуска команды cmake выглядит следующим образом:
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>
Это создает решение для многих проектов, однако попытка построить проект ALL_BUILDS не удалась.
Я заметил, что все некомпилируемые проекты (кроме porject ilmimf) жалуются на
error LNK1181: cannot open input file '..\IlmImf\Release\IlmImf-2_2.lib'
Пытаясь построить проект IlmImf самостоятельно сообщает:
error MSB6006: "cmd.exe" exited with code -1073741515.
вот полный вывод для проекта 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 ==========
Обратите внимание, я запускаю cmd и Visual Studio 2010 в режиме администратора, пытался скомпилировать все конфигурации (отладка, выпуск, MinSizeRel, RelWithDebInfo), но пока ничего не получалось.
У меня была точно такая же проблема, хотя компиляция для win32. Нужно дллв Lib каталог, созданный после сборки ilmbase.
Поэтому я решил добавить эту папку в системный путь Windows, и все отлично работает.
Error LNK1104 cannot open file '..\IlmImf\Debug\IlmImf-2_2.lib'
Error LNK1104 cannot open file '..\IlmImfUtil\Debug\IlmImfUtil-2_2.lib'
У меня были те же проблемы, и я просто скопировал Half.dll, Iex-2_2.dll и IlmThread-2_2.dll (три файла DLL, сгенерированные ilmbase) в папку b44ExpLogTable.exe. Затем я успешно построил openexr.
Я сделал так, как сказал RoozyGPLFX, и преодолел ошибку «cmd.exe». Но мне все еще любопытно, почему просто добавить путь lib imbase в путь библиотеки проекта VS2010 не работает, и я думаю, что это какие-то ошибки, потому что в нем не упоминается, что мы должны добавить это в системный «путь» в файл readme.
В дополнение, при компиляции с x64, после устранения этой ошибки, компиляция IlmImf.dll не может найти внешние символы, такие как compress, compress2, uncompress, которые должны быть экспортированы zlib. Ошибка может быть связана с тем, что загруженная версия zlib — Win32, и просто перекомпилируйте исходный код zlib с x64, чтобы решить эту проблему. (http://lists.gnu.org/archive/html/openexr-devel/2014-11/msg00004.html)
Когда IlmImf собран, он генерирует программу «b44ExpLogTable.exe» для генерации файла заголовка. Эта программа b44ExpLogTable.exe нуждается в правильных dll для запуска. Таким образом, нам нужно скопировать эти связанные библиотеки в каталог или системный каталог.