Windows下使用Visual Studio 2013成功配置openEXR

OpenEXR是一种适用于HDR(高动态范围)图像的文件格式,由工业光魔开发,具体就不讨论了,现在说说他神奇的配置方法。


1. 首先说说需要下载的内容:

1) 最新版的IlmBase和OpenEXR:http://www.openexr.com/downloads.html

IlmBase 2.2.0 source code release 和 OpenEXR_Viewers 2.2.0 source code release

也可以在github上把整个openexr一起下下来:https://github.com/openexr/openexr

2) zlib125.zip 和 zlib125dll.zip :http://www.winimage.com/zLibDll/index.html


2. 需要安装的内容

我们最后要安装的就是IlmBase和OpenEXR,并且需要zlib中的zlib.h,zconf.h,zdllwapi.lib,zlibwapi.exp,zdllwapi.dll。


3. 安装

下载下来后解压到任意目录,这里没有硬性要求的,反正安装好后安装文件就不需要了,为了保险起见,还是不要放在中文目录下比较好。

比如我把IlmBase解压到了E:\openexr\IlmBase;OpenEXR放在了E:\openexr\OpenEXR;zlib放在E:\zlib里。

接下来就是安装openexr,进入E:\openexr\OpenEXR中,首先就要看README文档了,readme文档中包括了软件信息,以及GNU/Linux or other UNIX-like的配置方法。Windows就看使用cmake(http://www.cmake.org/download/在这里下载安装)的安装方法“README.cmake.txt”,MacOS X就看README.OSX。

这里我们就只说windows下的安装方法,打开README.cmake.txt文件。


1) 首先第一步安装IlmBase,打开命令行(win+x,选择命令提示符),使用cd命令进入IlmBase的目录下(E:\openexr\IlmBase),按文档输入命令:

[plain]  view plain  copy
 print ?
  1. setlocal  
  2. del /f CMakeCache.txt  
  3. cmake -DCMAKE_INSTALL_PREFIX=<where you want to install the zlib builds> -G "Visual Studio 12"  ..\ilmbase    
 
在<>中输入想要安装IlmBase的位置,比如我的是D:\Program_Files\openexr\IlmBase。 

-G “”中输入VS的版本,这里10对应2010版;11对应2012版;12对应2013版。希望在64位下编译就加上后面的Win64, 32位下编译就不用加后面的了,zlib貌似只有32位的,所以为了防止出错,我就全部都选择了32位。我使用的是“Visual Studio 12”,就是2013版32位。

接下来在解压的目录(E:\openexr\IlmBase)下会出现ilmbase.sln,现在就可以用VS打开了,打开后在解决方案中看到几个项目,右键ALL_BUILD选编译,成功后在右键INSTALL编译,接下来就会在选择的安装目录下出现期待已久的include和lib文件夹了,最好现在就把这些目录添加到VS中,全局的添加方法见上一篇博客。

另外几个的安装方法也差不多。

2)安装zlib,在命令行中进入zlib的解压目录(E:\zlib),输入命令:

[plain]  view plain  copy
 print ?
  1. setlocal  
  2. del /f CMakeCache.txt  
  3. cmake -DCMAKE_INSTALL_PREFIX=<where you want to install the zlib builds> -G "Visual Studio 12"  ..\zlib    
我的安装路径选择了D:\Program_Files\zlib。命令执行完会出现zlib.sln,打开,对整个解决方案全部编译,然后右键INSTALL编译。

解压出的zlib的dll文件放进D:\Program_Files\bin里,或者放哪都行,总之都链接到VS里就好。


3)安装OpenEXR,最关键的一个了,得保证前面安装正确才能大功告成。命令行中,进入OpenEXR解压目录E:\openexr\OpenEXR,输入命令:

[plain]  view plain  copy
 print ?
  1. setlocal  
  2. del /f CMakeCache.txt  
  3. cmake  -DZLIB_ROOT=<zlib location> -DILMBASE_PACKAGE_PREFIX=<where you installed the ilmbase builds> -DCMAKE_INSTALL_PREFIX=<where you want to instal the openexr builds> -G "Visual Studio 12" ^  ..\openexr  

<>中是zlib和ilmbase的安装路径,以及要安装openexr的地方。运行成功后就会出现openexr.sln了。
这里的一个问题卡住我很久,打开openexr.sln时编译不通过,出现各种链接错误,查了一下,发现需要把安装的位置D:\Program_Files\openexr\ilmbase\lib;D:\Program_Files\zlib\bin;加到环境变量里.(参考http://stackoverflow.com/questions/26774563/compiling-openexr-for-windows7-64-using-visual-studio-2010-fails)
还要把zdllwapi.lib和zlibwapi.exp从zlib125dll\dll32复制到到D:\Program_Files\openexr\ilmbase\lib;把zdllwapi.dll从zlib125dll\dll32复制到D:\Program_Files\zlib\bin;

I had this exact issue and fixed it by copying all of the DLLs and Libs into the OpenEXR/IlmImf/Debug folder. Adding the lib folder to the system path didn't work for me. 

如果你是release就把所有dll和lib放到OpenEXR/IlmImf/Release目录
接下来就可以成功编译了,ALL_BUILD编译,然后INSTALL编译。安装目录下也出现了lib和include,都连到VS里面。


4) Half

这是如果运行openEXR的程序还是不行,还需要把E:\openexr\IlmBase里面的half配置好。

命令行中,进入E:\openexr\IlmBase\Half,输入命令:

[plain]  view plain  copy
 print ?
  1. setlocal  
  2. del /f CMakeCache.txt  
  3. cmake -DCMAKE_INSTALL_PREFIX=<where you want to install the half builds> -G "Visual Studio 12"  ..\half    

half的安装目录我直接写的目前E:\openexr\IlmBase\Half,然后出现了half.sln,打开,ALL_BUILD,INSTALL.在目前目录下出现了include和lib文件夹,把里面的东西分别放进D:\Program_Files\openexr\IlmBase\include,和D:\Program_Files\openexr\IlmBase\lib里,终于成功运行了E:\openexr\OpenEXR\IlmImfTest这个项目。


4. Visual Studio 配置

选择view->Property Manager,出现了属性管理器的界面,点开项目,选择Debug|Win32->右键Microsoft.Cpp.Win32.user->Properties.

在设置里配置openEXR的库目录。

选择VC++ Directories,在Executable Directori中加上D:\Program_Files\openexr\IlmBase\lib 和 D:\Program_Files\openexr\IlmBase\lib;在Include Directories中加上D:\Program_Files\openexr\OpenEXR\include\OpenEXR 和 D:\Program_Files\openexr\IlmBase\include\OpenEXR;在Library Directories中加上D:\Program_Files\openexr\OpenEXR\lib 和 D:\Program_Files\openexr\IlmBase\lib。

选择Linker->Input,Additional Dependencies中加上:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Half.lib
Iex-2_2.lib
IexMath-2_2.lib
Imath-2_2.lib
IlmThread-2_2.lib
IlmImf-2_2.lib
IlmImfUtil-2_2.lib
zlibd.lib
zlibwapi.lib


至此终于能够成功运行简单的openEXR程序了!感觉资料有些少,很多都是自己乱摸索的,配置方法可能有错,欢迎也在使用openEXR的同学一起讨论,一起进步~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值