прежде всего, я должен упомянуть, что я новичок в c++, но в ходе обучения я получил некоторый опыт программирования. В настоящее время я работаю над плагином для потока данных между vicon blade 1.7 и нереальным движком 4.4.3. Это необходимо сделать, используя Vicon Datastream SDK v 1.4, который содержит заголовочный файл, библиотеку и DLL файл.
Прямо сейчас у меня возникают проблемы с компиляцией моего основного плагина. Vicon DataStream SDK был построен в старой версии визуальной студии, чем в 2010 году. Поэтому я хочу знать, есть ли возможность продолжить работу с vicon sdk в visual studio 2013? Должен ли я заставить sdk использовать последнюю.dll в визуальной студии, и если да, то как мне это сделать?
Я уже пытался продолжить работу с sdk, игнорируя проблему, о которой я говорил ранее. Когда я построил проект без изменения файла заголовка sdk, я получаю эту ошибку:
Error 2 error C2059: syntax error : 'constant'
Вот затронутые строки:
#ifdef WIN32
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif // _EXPORTING
#elif defined( __GNUC__ )
#if __GNUC__ < 4
#error gcc 4 is required.
#endif
#define CLASS_DECLSPEC __attribute__((visibility("default")))
#else
#define CLASS_DECLSPEC
#endif
#include <string>
namespace ViconDataStreamSDK
{
namespace CPP
{
...
}
}
Если я переопределю второе пространство имен в "UCPP", я получаю огромный список ошибок, подобных этому:
Ошибка 2 ошибки LNK2019: неразрешенный внешний символ "__declspec (dllimport) public: __cdecl ViconDataStreamSDK :: UCPP :: Client :: Client (void)"
Я думаю, это потому, что CPP уже определен в нереальном движке, но из-за зависимости файла заголовка с DLL файлом в sdk определение пространства имен не меняется в sdk. Правильно ли это ожидание или я ошибаюсь?
У меня были аналогичные проблемы с пространством имен. Чтобы исправить это, я сделал это в своем файле заголовка UE4 Plugin перед включением Vicon DataStreamSDK
#define UCPP CPP
#undef CPP
#include <Client.h> //Vicon DataStreamSDK
.....
В конце этого файла я обновил макрос CPP
#define CPP PCPP
Это компилируется и отлично работает без проблем.