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

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to