qxmpp icon indicating copy to clipboard operation
qxmpp copied to clipboard

QXmppOmemo: Fix compilation on MSVC

Open jbruechert opened this issue 2 years ago • 1 comments

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:

  • [x] Document your code
  • [x] Add \since QXmpp 1.X, QXMPP_EXPORT
  • [x] Fix doxygen warnings (see log when building with -DBUILD_DOCUMENTATION=ON)
  • [x] Update doc/doap.xml
  • [x] Add unit tests
  • [x] Format the code: Run clang-format -i src/<edited-file(s)> tests/<edited-file(s)>

jbruechert avatar Sep 17 '22 13:09 jbruechert

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
@@           Coverage Diff           @@
##           master     #466   +/-   ##
=======================================
  Coverage   68.36%   68.36%           
=======================================
  Files         298      298           
  Lines       25869    25869           
=======================================
  Hits        17685    17685           
  Misses       8184     8184           
Impacted Files Coverage Δ
src/client/QXmppFileEncryption.cpp 67.44% <ø> (ø)
src/omemo/QXmppOmemoManager.cpp 16.22% <ø> (ø)
src/omemo/QXmppOmemoManager_p.cpp 5.00% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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

codecov[bot] avatar Sep 17 '22 13:09 codecov[bot]

replaced by #548 and #550

lnjX avatar Mar 09 '23 15:03 lnjX