Hi,
I'm currently trying to compile the DNG SDK and all of its dependencies from source. My operating system ist Windows 7 and I'm using Visual Studio 2013 and 2015. I'm able to build the dng sdk for VS13 with the supplied solution files. So far, so good. BUT, my ultimate goal is to build everything with VS2015. And that's where the fun starts.
I cannot use the precompiled static libraries for XMP that are included in the "dng sdk 1.4". The linker is not willing to link these files for obvious reasons. Therefore, I have to create my own static/shared libraries. I downloaded the latest release CC-2016.7 (I also tried every other release that can be found at: http://www.adobe.com/devnet/xmp.html) and compiled it. Unfortunately, these are not compatible with the DNG SDK.
Let me explain why. When I replace the static libraries and the public interface of XMP, that were supplied with DNG, with the corresponding files from the separately downloaded XMP SDK, I get several header related errors. This is the build log:
------ Rebuild All started: Project: dng_sdk, Configuration: Debug x64 ------
dng_1d_function.cpp
dng_1d_table.cpp
dng_abort_sniffer.cpp
dng_area_task.cpp
dng_bad_pixels.cpp
dng_big_table.cpp
dng_bottlenecks.cpp
dng_camera_profile.cpp
dng_color_space.cpp
dng_color_spec.cpp
dng_date_time.cpp
dng_exceptions.cpp
dng_exif.cpp
dng_file_stream.cpp
dng_filter_task.cpp
dng_fingerprint.cpp
dng_gain_map.cpp
dng_globals.cpp
dng_host.cpp
dng_hue_sat_map.cpp
dng_ifd.cpp
dng_image.cpp
dng_image_writer.cpp
dng_info.cpp
dng_iptc.cpp
dng_jpeg_image.cpp
dng_lens_correction.cpp
dng_linearization_info.cpp
dng_local_string.cpp
dng_lossless_jpeg.cpp
dng_matrix.cpp
dng_memory.cpp
dng_memory_stream.cpp
dng_misc_opcodes.cpp
dng_mosaic_info.cpp
dng_mutex.cpp
dng_negative.cpp
dng_opcode_list.cpp
dng_opcodes.cpp
dng_orientation.cpp
dng_parse_utils.cpp
dng_pixel_buffer.cpp
dng_point.cpp
dng_preview.cpp
dng_pthread.cpp
dng_rational.cpp
dng_read_image.cpp
dng_rect.cpp
dng_ref_counted_block.cpp
dng_reference.cpp
dng_render.cpp
dng_resample.cpp
dng_safe_arithmetic.cpp
dng_shared.cpp
dng_simple_image.cpp
dng_spline.cpp
dng_stream.cpp
dng_string.cpp
dng_string_list.cpp
dng_tag_types.cpp
dng_temperature.cpp
dng_tile_iterator.cpp
dng_tone_curve.cpp
dng_utils.cpp
dng_xmp.cpp
dng_xmp_sdk.cpp
dng_xy_coord.cpp
..\..\..\source\dng_xmp_sdk.cpp(335): error C2653: 'SXMPDocOps' : is not a class or namespace name
..\..\..\source\dng_xmp_sdk.cpp(335): error C3861: 'SetAppName': identifier not found
..\..\..\source\dng_xmp_sdk.cpp(1752): error C2065: 'SXMPDocOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1752): error C2146: syntax error : missing ';' before identifier 'docOps'
..\..\..\source\dng_xmp_sdk.cpp(1752): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1754): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1754): error C2228: left of '.OpenXMP' must have class/struct/union
type is 'unknown-type'
..\..\..\source\dng_xmp_sdk.cpp(1781): error C2065: 'SXMPDocOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1781): error C2146: syntax error : missing ';' before identifier 'docOps'
..\..\..\source\dng_xmp_sdk.cpp(1781): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1783): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1783): error C2228: left of '.OpenXMP' must have class/struct/union
type is 'unknown-type'
..\..\..\source\dng_xmp_sdk.cpp(1787): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1787): error C2228: left of '.NoteChange' must have class/struct/union
type is 'unknown-type'
..\..\..\source\dng_xmp_sdk.cpp(1787): error C2065: 'kXMP_Part_All' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1789): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1789): error C2228: left of '.PrepareForSave' must have class/struct/union
type is 'unknown-type'
..\..\..\source\dng_xmp_sdk.cpp(1812): error C2065: 'SXMPDocOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1812): error C2146: syntax error : missing ';' before identifier 'docOps'
..\..\..\source\dng_xmp_sdk.cpp(1812): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1814): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1814): error C2228: left of '.OpenXMP' must have class/struct/union
type is 'unknown-type'
..\..\..\source\dng_xmp_sdk.cpp(1817): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1817): error C2228: left of '.NoteChange' must have class/struct/union
type is 'unknown-type'
..\..\..\source\dng_xmp_sdk.cpp(1817): error C2065: 'kXMP_Part_Metadata' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1819): error C2065: 'docOps' : undeclared identifier
..\..\..\source\dng_xmp_sdk.cpp(1819): error C2228: left of '.PrepareForSave' must have class/struct/union
type is 'unknown-type'
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
After a short investigation, I found out that the XMP header files supplied with DNG have additional sections. All of these sections are encapsulated in an "#if AdobePrivate" statement. I've checked all versions of XMP down to 5.12. None of these has this kind of additions. That's the point, where I'm stuck.
What can I do now? Is there some other XMP SDK that has the correct interface definition as requested by DNG SDK 1.4?
Best regards,
Michael