Я хочу использовать gloox библиотеки C++ в своем C-коде (пакет easycwmp для openwrt).использовать C++ метод в c-программе
компилировать с OpenWRT toolschain в gloox в упаковке:
здесь СРР файл gloox.cpp:
#include "gloox.h"
namespace gloox
{
const std::string XMPP_STREAM_VERSION_MAJOR = "1";
const std::string XMPP_STREAM_VERSION_MINOR = "0";
const std::string GLOOX_VERSION = "1.0.11";
const std::string GLOOX_CAPS_NODE = "http://camaya.net/gloox";
}
extern "C" const char* gloox_version()
{
return gloox::GLOOX_VERSION.c_str();
}
заголовочный файл gloox.h:
#ifndef GLOOX_H__
#define GLOOX_H__
#include "macros.h"
extern "C" //--> error: expected identifier or '(' before string constant
{
GLOOX_API const char* gloox_version();
}
#endif // GLOOX_H__
компиляция пакета gloox в порядке , когда я включаю gloox.h в свой код C пакета easycwmp. Я получаю эту ошибку:
staging_dir/target-i386_uClibc-0.9.33.2/usr/include/gloox.h: 12: 8: ошибка: ожидаемый идентификатор или '(' перед строкой! !!
компилировать libgloox с командой:
make package/libgloox/compile
, а затем компилировать easycwmp пакет с ЦМД:
make package/easycwmp/compile
любая помощь
Можете ли вы показать нам 'macros.h'? – Sean
От взгляда на это, похоже, вам нужно обернуть всю библиотеку gloox в оболочку C, если вы хотите ее использовать. Я думаю, что лучше написать «C-like» C++, чем выполнять всю работу, необходимую для ее переноса. – molbdnilo