qxmpp-project / qxmpp

Cross-platform C++ XMPP client and server library
410 stars 197 forks source link

QXmppOmemo: Fix compilation on MSVC #466

Closed jbruechert closed 1 year ago

jbruechert commented 1 year ago

Windows headers define a number of macros which conflict with normal names of functions and variables that we want to use. Undefining them fixes it.

This pull request makes it not yet fully work, there is still a linker error to fix.

   Creating library src\omemo\QXmppOmemo.lib and object src\omemo\QXmppOmemo.exp
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClientExtension::staticMetaObject" (?staticMetaObject@QXmppClientExtension@@2UQMetaObject@@B)
OmemoCryptoProvider.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClientExtension::staticMetaObject" (?staticMetaObject@QXmppClientExtension@@2UQMetaObject@@B)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClientExtension::staticMetaObject" (?staticMetaObject@QXmppClientExtension@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClientExtension::staticMetaObject" (?staticMetaObject@QXmppClientExtension@@2UQMetaObject@@B)
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLogger::staticMetaObject" (?staticMetaObject@QXmppLogger@@2UQMetaObject@@B)
OmemoCryptoProvider.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLogger::staticMetaObject" (?staticMetaObject@QXmppLogger@@2UQMetaObject@@B)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLogger::staticMetaObject" (?staticMetaObject@QXmppLogger@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLogger::staticMetaObject" (?staticMetaObject@QXmppLogger@@2UQMetaObject@@B)
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLoggable::staticMetaObject" (?staticMetaObject@QXmppLoggable@@2UQMetaObject@@B)
OmemoCryptoProvider.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLoggable::staticMetaObject" (?staticMetaObject@QXmppLoggable@@2UQMetaObject@@B)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLoggable::staticMetaObject" (?staticMetaObject@QXmppLoggable@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppLoggable::staticMetaObject" (?staticMetaObject@QXmppLoggable@@2UQMetaObject@@B)
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClient::staticMetaObject" (?staticMetaObject@QXmppClient@@2UQMetaObject@@B)
OmemoCryptoProvider.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClient::staticMetaObject" (?staticMetaObject@QXmppClient@@2UQMetaObject@@B)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClient::staticMetaObject" (?staticMetaObject@QXmppClient@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppClient::staticMetaObject" (?staticMetaObject@QXmppClient@@2UQMetaObject@@B)
mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppPubSubManager::staticMetaObject" (?staticMetaObject@QXmppPubSubManager@@2UQMetaObject@@B)
OmemoCryptoProvider.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppPubSubManager::staticMetaObject" (?staticMetaObject@QXmppPubSubManager@@2UQMetaObject@@B)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppPubSubManager::staticMetaObject" (?staticMetaObject@QXmppPubSubManager@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppPubSubManager::staticMetaObject" (?staticMetaObject@QXmppPubSubManager@@2UQMetaObject@@B)
QXmppOmemoData.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_omemo_2" (?ns_omemo_2@@3PEBDEB)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_omemo_2" (?ns_omemo_2@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_omemo_2" (?ns_omemo_2@@3PEBDEB)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_omemo_2_devices" (?ns_omemo_2_devices@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_omemo_2_devices" (?ns_omemo_2_devices@@3PEBDEB)
QXmppOmemoManager.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppTrustManager::staticMetaObject" (?staticMetaObject@QXmppTrustManager@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QXmppTrustManager::staticMetaObject" (?staticMetaObject@QXmppTrustManager@@2UQMetaObject@@B)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_client" (?ns_client@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_auto_create" (?ns_pubsub_auto_create@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_config_node" (?ns_pubsub_config_node@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_config_node_max" (?ns_pubsub_config_node_max@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_create_and_configure" (?ns_pubsub_create_and_configure@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_create_nodes" (?ns_pubsub_create_nodes@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_publish" (?ns_pubsub_publish@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_pubsub_publish_options" (?ns_pubsub_publish_options@@3PEBDEB)
QXmppOmemoManager_p.cpp.obj : error LNK2001: unresolved external symbol "char const * const ns_omemo_2_bundles" (?ns_omemo_2_bundles@@3PEBDEB)
src\omemo\QXmppOmemo.dll : fatal error LNK1120: 17 unresolved externals

PR check list:

codecov[bot] commented 1 year ago

Codecov Report

Base: 68.36% // Head: 68.36% // No change to project coverage :thumbsup:

Coverage data is based on head (adebb83) compared to base (befab2f). Patch has no changes to coverable lines.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #466 +/- ## ======================================= Coverage 68.36% 68.36% ======================================= Files 298 298 Lines 25869 25869 ======================================= Hits 17685 17685 Misses 8184 8184 ``` | [Impacted Files](https://codecov.io/gh/qxmpp-project/qxmpp/pull/466?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=qxmpp-project) | Coverage Δ | | |---|---|---| | [src/client/QXmppFileEncryption.cpp](https://codecov.io/gh/qxmpp-project/qxmpp/pull/466/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=qxmpp-project#diff-c3JjL2NsaWVudC9RWG1wcEZpbGVFbmNyeXB0aW9uLmNwcA==) | `67.44% <ø> (ø)` | | | [src/omemo/QXmppOmemoManager.cpp](https://codecov.io/gh/qxmpp-project/qxmpp/pull/466/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=qxmpp-project#diff-c3JjL29tZW1vL1FYbXBwT21lbW9NYW5hZ2VyLmNwcA==) | `16.22% <ø> (ø)` | | | [src/omemo/QXmppOmemoManager\_p.cpp](https://codecov.io/gh/qxmpp-project/qxmpp/pull/466/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=qxmpp-project#diff-c3JjL29tZW1vL1FYbXBwT21lbW9NYW5hZ2VyX3AuY3Bw) | `5.00% <ø> (ø)` | | Help us with your feedback. Take ten seconds to tell us [how you rate us](https://about.codecov.io/nps?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=qxmpp-project). Have a feature suggestion? [Share it here.](https://app.codecov.io/gh/feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=qxmpp-project)

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

lnjX commented 1 year ago

replaced by #548 and #550