[
https://issues.apache.org/jira/browse/LOGCXX-456?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Thorsten Schöning resolved LOGCXX-456.
--------------------------------------
Resolution: Fixed
Fix Version/s: 0.11.0
I've committed my changes, feel free to reopen the issue if any problems arise.
> Some header defined getters and setters are wrongly removed by C++-Builder 10
> Seattle.
> --------------------------------------------------------------------------------------
>
> Key: LOGCXX-456
> URL: https://issues.apache.org/jira/browse/LOGCXX-456
> Project: Log4cxx
> Issue Type: Bug
> Affects Versions: 0.11.0
> Environment: Embarcadero C++-Builder 10 Seattle
> Reporter: Thorsten Schöning
> Assignee: Thorsten Schöning
> Fix For: 0.11.0
>
>
> I'm currently building the log library log4cxx in C++-Builder 10 Seattle as a
> static lib. All went well until I came to the tests, where linker errors
> about unresolved externals occured, even though I added the lib. The
> interesting thing is that I'm literelly building every available CPP file for
> the lib, except the tests of course, and the source class for the missing
> method is build as well and other methods of that class are available in the
> lib. It's only one method missing. This method and all the other responsible
> for the unresolved external seem to be defined in the header only, because
> they are only simple getters or setters. But the same class has other getters
> and setters defined exactly the same way in the header as well and those are
> not part of the linker errors.
> The only difference I found so far is that the mentioned methods are not used
> within the lib, but only externally in the tests. That's why those getters
> and setters are declared public. The following is one example:
> {code}
> public:
> [...]
> const LevelPtr& getThreshold() const { return threshold; }
> {code}
> If I copy the definition to the CPP file, the unresolved external is removed
> at least for that method.
> {code}
> const LevelPtr& AppenderSkeleton::getThreshold() const
> {
> return threshold;
> }
> {code}
> This looks like that the method is optimized away even though it's declared
> public and on static lib level one can't know who uses those methods.
> While this looks like an error in my IDE, the fix for this is easy and
> shouldn't harm anybody, so I'm changing the methods mentioned in my error
> messages and document the problem here for later reference and findings.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)