[ 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)