Приходится вызывать функцию C stati c как часть моей функции рабочего потока boost. C stati c работает как часть другого кода C ++, однако она не может скомпилироваться, будучи частью функция рабочего потока.
Ниже приводится список заголовков, включенных в мой файл заголовка C ++.
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include <boost/asio/io_service.hpp>
#include <string>
#include <queue>
и c заголовок кода начинается следующим образом:
#ifdef __cplusplus
extern "C" {
#endif
#if defined(MS_WINNT) || defined(WIN32)
#include <windows.h>
typedef BSTR ARG;
У меня нет контроля над кодом C, но я контролирую код C ++, который я вызываю.
Сообщение об ошибке, которое у меня возникает, выглядит следующим образом:
ошибка C2146: синтаксическая ошибка: отсутствует ';'
Однако, если я поменяю порядок включаемых файлов, я получаю другое сообщение об ошибке.
ошибка C1189: #error: WinSock.h уже включен
Использование Visual Studio 2010 с библиотеками boost 1.62 . Можно ли компилировать и запускать подобные вещи?
Добавление основной части кода C ++.
#ifndef _THREADS
#define _THREADS
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include <boost/asio/io_service.hpp>
#include <string>
#include <queue>
namespace testThreads
{
class boostthreads
{
boost::asio::io_service _io_service;
boost::asio::io_service::work _work;
boost::thread_group _Threads;
std::queue<std::string> _queueOfRequests;
boost::mutex _mutex;
void handleCurrentRequest();
unsigned long getThreadId ( std::string& currentThreadIdA);
public:
boostthreads();
~boostthreads();
};
}
#endif