Правильное использование функций переменных аргументов C API с реализацией C++C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Правильное использование функций переменных аргументов C API с реализацией C++

Сообщение Гость »


Я хочу использовать библиотеку журналирования C++ в приложении, смешанном на C/C++. Устаревшее приложение полно журналов в стиле printf. Новая библиотека также поддерживает это.

Файлы C скомпилированы с помощью компилятора C, поэтому я не могу включить в них заголовки журналирования C++.

Я пытаюсь создать библиотеку C++ с заголовками в стиле C и исходным файлом C++:

//logger.h внешний "С" { extern void RS_LOG_INFO_PRIVATE(const char* fmt, ...); #define LOG_INFO(...) RS_LOG_INFO_PRIVATE(__VA_ARGS__) } //logger.cpp #include "logger.h" #include #include шаблон void RS_LOG_INFO_PRIVATE(const char* fmt, Args&&... args) { AWS_LOG_DEBUG(fmt, std::forward(args)...); } //основной файл #include "logger.h" интервал основной() { LOG_INFO("тест %s", "я"); } Я получаю неопределенную ссылку на «RS_LOG_INFO_PRIVATE».

nm -C также подтверждает это:

U RS_LOG_INFO_PRIVATE(char const*, ...) Есть ли решение этой проблемы или мне следует изменить свой подход?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»