vs发生生成错误_如何通过VS编译dng sdk

617c0ce55fe6810ef58b78161484d393.png

How to build dng sdk with VS 2017


安装dng sdk和libjpeg

首先,我们需要去adobe官方网站上下载dng sdk的源码,链接如下:

dng sdk download link

解压出来以后,得到如下文件夹:

6ae78a93643d71bc430dc33415c53c7f.png
初始sdk解压后的目录

注意这个ReadMe.txt,这里面告诉我们,还需要去下载libjpeg库放到当前目录下:

对于windows系统,步骤如下: 1. 下载libjpeg库,下载地址: http://www. ijg.org/files/jpegsr9b. zip
  1. 解压并重命名为"libjpeg",然后把这个文件夹放置在上图显示的文件夹,也就是这个ReadMe.txt旁边。
  2. 进入libjpeg文件夹,把jconfig.vc这个文件重命名为jconfig.h。

结果如下:

97470c3ae308a86a4f3823ccb008a214.png
添加libjpeg后的目录

如果你使用的是VS2013,这个时候你就不需要看第二步了,直接跳到第三步

安装xmp/zlib/expat

因为上一步下载的xmp文件夹里面的.lib是adobe使用VS2013预编译好的,我们使用VS2017的话会在链接阶段报错,提示当前MSVC不是1800版本,和xmp lib的MSVC版本不一致。所以我们需要自己下载和编译xmp sdk。我们继续按照ReadMe.txt的提示往下走:

前往 http://www. adobe.com/devnet/xmp/ 下载xmp sdk

解压到当前文件夹,如下:

9cf0f5908e8a0caf5ab614d55e62e0ed.png
解压xmp sdk后的目录

点进去,如图:

8e9472a67b846f19542a0b53326e07f0.png

根据这个pdf文件的提示,我们还需要依赖:

b38c76cdfd26b3bd413217acbbeeb65c.png
明确需要cmake,expat,zlib

我们还需要安装cmake,下载expat/zlib的源码,并且放置在third-party目录下:

e12d5504c2f678285b1dc12974b782a9.png

在expat和zlib目录下,都有一个readme.txt告诉你如何下载,如何正确放置.h .c文件,安装它的要求做即可;

  1. 下载expat http://sourceforge.net/projects/expat/files/expat/2.1.0/
  2. 解压以后把lib文件夹放置在 /third-party/expat目录下即可

zlib的步骤:

  1. 前往 http://www.zlib.net/ 下载zlib源码
  2. 解压以后,把所有的第一级目录下的.h .c文件全部复制到/third-party/zlib目录下

安装cmake,前往cmake 下载链接下载windows版本的安装包,在安装的时候勾选添加cmake到环境变量;

退出third-party目录,进入build目录,修改几个.bat文件,来确保cmake生成VS2017的工程文件,默认是VS2015。首先打开如下4个bat文件:

42d49f9d6c812733b8d0768543030b4a.png
其实只要改2个bat就可以,往下看

f36a37e0cb43f5152ca74585c6021d65.png

修改如下,首先打开GenerateXMPToolkitSDK_win.bat,修改VS版本为2017:

32DLL
echo "Generating XMPSDKToolkit Dynamic Win32"
set VS_VERSION=2017
...

:32LIB
echo "Generating XMPSDKToolkit Static Win32"
set VS_VERSION=2017
...

:64DLL
echo "Generating XMPSDKToolkit Dynamic x64"
set VS_VERSION=2017
...

:64LIB
echo "Generating XMPSDKToolkit Static x64"
set VS_VERSION=2017
...

然后打开CMakeUtils.bat,修改如下:

da675ed189757774ab6357fcdd84896b.png

c5412769b4580c2694a0a7f810a22562.png

编译

以上步骤完成以后,可以开始正式编译了

编译xmp sdk

进入如下目录,运行GenerateXMPToolkitSDK_win.bat

2dd79023ef2e26d71a0e64bff8850964.png

生成vc14文件,里面有VS 2017工程文件

134fb08c08d5d9f0e4ace95630187927.png
工程文件就好了

双击用VS2017打开,然后设置生成静态调试lib,否则的话在链接dng sdk的时候会报链接错误:

25716377a15793e6f3fa82e4fc9629e3.png
大坑,千万要避开

编译:

14ac7dd347b0dbe41d3912695547cffa.png

生成的lib位置(注意要改成如下名字,在末尾加上Debug):

a1a9a5e85adbd4bc1bd0e89f924a792f.png
adobe的开发脑回路估计有问题

编译dng sdk

把lib和头文件复制到dng sdk目录下:

3830e0f2b723ceaf87f3d4cdeeb05a5d.png

70f5064fef8ed336ed02863de91c9d53.png
拷贝头文件

打开dng sdk工程文件:

43eaadbf94dcae441482a14aed98b00a.png

做一些修改,解决win10 sdk头文件time.h冲突问题,以及使用c++ vector替代dng_std_vector,不使用xmp的adobe私有功能(我们自己编译的xmp sdk没有这部分代码)

e3b803c698978785b28406a9d06044a0.png
我又要好好吐槽一下adobe,放出来的预编译版本多了个privete,源码版本呢没有

v2-405dc07e9f415384aa36b37c1842c908_b.jpg
和win10 sdk time.h冲突

f85c35b07ce606f91fbd9c983c2d23ad.png

开始编译

bc875c22b2ac5e41c77c30e0eda9ef5e.png

编译validate dng应用程序

如果你到了这一部,恭喜,大功快告成了!

接下来做最后一部,编译一个dng sdk自带的例子测试是否正常:

2ab6ccd213f7c9336921aeb6770feeb0.png
再次吐槽adobe 开发脑回路,吃了没事改啥目标路径

为了方便debug,我建议更改一下exe输出位置,否则你点击debug运行,VS会报找不到exe;

接下来就可以愉快的编译了

f2ca03d85a3ecb87a7d8c9068d62d69f.png

测试dng

我们生成的dng_validate.exe在如下位置,我们在同一个目录下放置一个dng文件:

63659a67e216a2e8b4fe3f4958924d9e.png
新买的荣耀20 pro,华为直男手机,出来的raw是没有压缩的

用命令行的方式运行,这里我使用的是Powershlell:

e393e1679218ab4a635cb1024f71d89d.png
折腾一天终于成功了

如无问题,此时显示dng内部各个ifd entry的tag解析值,enjoy your dng application!

家境贫寒,buy me a cup of coffee

51756be34d9017af9280e0ca06b2fa34.png

f92732866b72ba9fff8b54b001cb8f1b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值