首先,我必须提到我是 C++ 新手,但在我的学习过程中,我获得了一些编程经验。目前,我正在为 vicon Blade 1.7 和虚幻引擎 4.4.3 之间的数据流开发插件。这应该通过使用包含头文件、库和 .dll 文件的 Vicon Datastream SDK v 1.4 来完成。
现在,我在编译我的基本插件时遇到了问题。Vicon DataStream SDK 是在比 2010 年更旧版本的 Visual Studio 中构建的。所以我想知道是否有可能继续在 Visual Studio 2013 中使用 vicon sdk?我应该强制 sdk 在 Visual Studio 中使用最新的 .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 已经在虚幻引擎中定义了,但是由于头文件对 sdk 中的 .dll 文件的依赖性,命名空间的定义在 sdk 中是不可更改的。这种期望是正确的还是我走错了路?