Прежде всего я должен упомянуть, что я новичок в c ++, но в ходе обучения я приобрел некоторый опыт программирования.
В настоящее время я работаю над плагином для потока данных между vicon blade 1.7 и нереальным движком 4.4.3. Это должно быть сделано с помощью Vicon Datastream SDK v 1.4, который содержит заголовочный файл, библиотеку и файл .dll.
Прямо сейчас у меня проблемы с компиляцией моего основного плагина.
Vicon DataStream SDK был создан в более старой версии Visual Studio, чем в 2010 году. Так что я хочу знать, есть ли возможность продолжить работу с Vicon SDK в Visual Studio 2013? Должен ли я заставить SDK использовать последнюю версию DLL в Visual Studio, и если да, то как мне это сделать?
Я уже пытался продолжить работу с 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 (аннулируются)»
Я думаю, это потому, что CPP уже определен в нереальном движке, но из-за зависимости файла заголовка от файла .dll в SDK, определение пространства имен не может быть изменено в SDK.
Это ожидание правильное или я на неправильном пути?
У меня были похожие проблемы с пространством имен. Чтобы исправить это, я сделал это в моем заголовочном файле плагина UE4 перед включением Vicon DataStreamSDK
#define UCPP CPP
#undef CPP
#include <Client.h> //Vicon DataStreamSDK
.....
В конце этого файла я переопределил макрос CPP
#define CPP PCPP
Компилируется и работает нормально без проблем