As per discussions elsewhere, it seems that "#pragma link defined_in" can select symbols which are not defined in the listed file(s). One example of this appears in issue 12 in the context of the StringMap typedef in KF5.Attica:
$ pytest -s KF5.Attica/test.py ... cls = <class 'cppyy._cpython_cppyy.gbl'>, name = 'StringMap' def __getattr__(cls, name): try: attr = _backend.LookupCppEntity(name) except Exception as e: > raise AttributeError(str(e)) E AttributeError: StringMap
Wim has indicated that the underlying issue here may be related to the fact that StringMap is a template instantiation referring to QString, and that QString may not be handled properly even though it is not defined in the selected file(s).
There are several other instances of what may be a similar problem:
- Long64_t, referenced in KF5.Config.
- GDoubleIEEE754, referenced in KF5.NetworkManagerQt
In both cases, these symbols are also in the .rootmap though not defined in the the selected files.