簡體   English   中英

使用visual-studio 2010為Windows7 64編譯OpenEXR失敗

[英]Compiling OpenEXR for Windows7 64 using visual-studio 2010 fails

我在使用CMake為Windows 7構建OpenEXR時遇到問題。

我按照這里描述的方向

運行cmake命令后的cmd輸出如下:

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,嘗試編譯所有配置(debug,release,MinSizeRel,RelWithDebInfo)但到目前為止沒有任何工作。

我有完全相同的問題,雖然為win32編譯。 它需要在構建ilmbase后創建的lib目錄中的dll 所以我的解決方案是將該文件夾添加到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(由ilmbase生成的三個dll文件)復制到b44ExpLogTable.exe文件夾。 然后我成功構建了openexr。

我按照RoozyGPLFX的說法做了,並克服了“cmd.exe”退出錯誤。 但我仍然很好奇為什么只在VS2010項目的庫路徑中添加imbase lib路徑不起作用,我認為這是一些錯誤,因為它沒有提到我們應該將它添加到系統“路徑”中自述文件。 為了補充,在使用x64進行編譯時,在解決此錯誤后,編譯IlmImf.dll無法找到外部符號,如compress,compress2,uncompress應該由zlib導出。 錯誤可能是由於下載的zlib版本是Win32,只需用x64重新編譯zlib源就可以解決這個問題。( http://lists.gnu.org/archive/html/openexr-devel/2014-11/msg00004.html

當構建IlmImf時,它將生成“b44ExpLogTable.exe”程序以生成頭文件。 這個程序b44ExpLogTable.exe需要正確的dll才能運行。 因此,我們需要將這些相關的dll復制到目錄或系統目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM