2014-11-06 3 views
8

У меня возникли проблемы с созданием OpenEXR для Windows 7 с использованием CMake.Компиляция OpenEXR для Windows7 64 с использованием visual-studio 2010 не работает

Я следующие направления описаны here

ЦМД выход после того, как выполнить команду 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 в admini strator, попробовал компиляцию всех конфигураций (debug, release, MinSizeRel, RelWithDebInfo), но пока ничего не работало.

ответ

10

У меня была такая же проблема, хотя компиляция для win32. Он нуждается в dll s в lib каталог создан после строительства ilmbase. Итак, я решил добавить эту папку в системный путь Windows, и все работает отлично.

+0

Большое спасибо :), он компилируется сейчас. – has981

+0

Большое спасибо. Уже собирался навредить себе. – Rotem

+2

У меня была эта точная проблема и исправлена ​​ее копированием всех DLL в папку OpenEXR/IlmImf/Debug. Добавление папки lib в системный путь не помогло мне. – zander

0

Я сделал то, что сказал RoozyGPLFX, и преодолел ошибку «cmd.exe». Но мне все еще интересно, почему просто добавить путь библиотеки 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)

0

Когда IlmImf устроятся, это генератор программы «b44ExpLogTable.exe» для генератора файл заголовка. Для этой программы b44ExpLogTable.exe нужны правильные DLL для запуска. Таким образом, нам нужно скопировать эти связанные DLL в каталог или системный каталог.

1
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 успешно.

+0

Спасибо, это было прекрасно. Я добавил эти строки в свою копию сценария сборки Windows VFXPro99 https://raw.githubusercontent.com/vfxpro99/usd-build-club/master/prerequisites-vc140-x64/openexr.cmd, и он сработал. – GaryO