Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exiv2::BasicIo:: AutoPtr and Exiv2::BasicIo::UniquePtr #1264

Closed
tomerbarak11 opened this issue Aug 19, 2020 · 3 comments
Closed

Exiv2::BasicIo:: AutoPtr and Exiv2::BasicIo::UniquePtr #1264

tomerbarak11 opened this issue Aug 19, 2020 · 3 comments
Assignees
Labels
compilers Related with compiler options, definitions, support, etc.
Milestone

Comments

@tomerbarak11
Copy link

tomerbarak11 commented Aug 19, 2020

I'm wondering,
Why does Exiv2::BasicIo::AutoPtr work in Windows and doesn't work in Linux?
Why does Exiv2::BasicIo::UniquePtr work in Linux and doesn't work in Windows?
I want to write the same code for both Operation Systems Windows and Linux and I can't.

@clanmills clanmills self-assigned this Aug 19, 2020
@clanmills clanmills added compilers Related with compiler options, definitions, support, etc. and removed bug labels Aug 19, 2020
@clanmills
Copy link
Collaborator

Exiv2 v0.27.3 (and earlier) uses AutoPtr and should be compiled with C++98. It will compile with C++11 and C++14 using the CMake options: -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_FLAGS=-Wno-deprecated I was the release engineer for every release of Exiv2 v0.27 and believe it compiles on all supported platforms.

Exiv2 on the 'master' branch user UniquePtr and should be compiled with C++11 or later. The 'master' branch will be labelled Exiv2 v0.28 when it is eventually released. I'm not involved with 'master', however I believe it compiles on all platforms.

What is your version of Exiv2 (look in CMakeLists.txt), how did you obtain it, and what compiler(s) are you using?

@clanmills clanmills added this to the v0.27.4 milestone Aug 19, 2020
@clanmills
Copy link
Collaborator

clanmills commented Aug 19, 2020

I've thought of how you could arrive in this situation. You have a different versions of the library on Linux and Windows. So you are using a version of Exiv2 v0.27 on Windows and 'master' (0.27.99.0) on Linux.

We took decisions in 2018 to:

  1. Modernise the code to C++11 (and later)
  2. Remove some features
  3. Not preserve the API from 0.27
  4. 0.27 "dot" release emit deprecation warnings for features removed from 'master' (0.28).

You have to choose to work with 0.27, or 'master' (0.28). To ease the transition to 0.28, we have published 3 "dot" releases of Exiv2 v0.27 and will publish another if necessary in 2021. We provide the macro EXIV2_TEST_VERSION to enable you to write code which can works with both. If you are writing new code, you should choose to develop with 0.27, or 'master' and keep your life simple!

@clanmills
Copy link
Collaborator

I'm going to close this. The issue will be reopened when the user provides evidence.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compilers Related with compiler options, definitions, support, etc.
Projects
None yet
Development

No branches or pull requests

2 participants