0

首先,我必须提到我是 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 中是不可更改的。这种期望是正确的还是我走错了路?

4

1 回答 1

1

我在命名空间方面遇到了类似的问题。为了解决这个问题,我在包含 Vicon DataStreamSDK 之前在我的 UE4 插件头文件中执行了此操作

#define UCPP CPP
#undef CPP
#include <Client.h> //Vicon DataStreamSDK
..... 

在这个文件的最后,我重新定义了 CPP 宏

#define CPP PCPP

这可以编译并正常工作,没有问题

于 2014-12-12T11:08:47.680 回答