[lttng-dev] linking C++ modules against lttng-ust libraries

Gerlando Falauto gerlando.falauto at keymile.com
Mon May 12 10:53:54 EDT 2014


Hi,

I am trying to link a C++ application against lttng-ust, with a simple 
test case, and I get the following error message upon linking:

main.cpp:109: undefined reference to `_lttng_ust_tracef(char const*, ...)'

where main.cpp reads:
...
13: #include <lttng/tracef.h>
...
109: tracef("my message, this integer %d", 1234);
...

The following seems to fix my problem:

diff --git a/include/lttng/tracef.h b/include/lttng/tracef.h
index 16a984b..98338d8 100644
--- a/include/lttng/tracef.h
+++ b/include/lttng/tracef.h
@@ -23,6 +23,10 @@
   * SOFTWARE.
   */

+#ifdef __cplusplus
+extern "C" {
+#endif
+
  #include <lttng/lttng-ust-tracef.h>

  extern
@@ -35,4 +39,8 @@ void _lttng_ust_tracef(const char *fmt, ...);
                         _lttng_ust_tracef(fmt, ## __VA_ARGS__);         \
         } while (0)

+#ifdef __cplusplus
+}
+#endif
+
  #endif /* _LTTNG_UST_TRACEF_H */

But since I've noticed in the history that this whole C guard has been 
reworked several times lately, I have no idea whether this is a good 
idea or not.
Don't know if this has any relevance or anything, but both lttng-ust 
(along with its dependencies) and my test application are being 
cross-compiled.

Hints?

Thank you,
Gerlando



More information about the lttng-dev mailing list