【问题标题】:Using Vicon Datastream SDK with Unreal Engine throws error on namespace CPP in Vicons client.h将 Vicon Datastream SDK 与 Unreal Engine 一起使用会在 Vicons client.h 中的命名空间 CPP 上引发错误
【发布时间】:2015-01-07 19:02:24
【问题描述】:

首先我必须提到我是 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) 公共:__cdecl ViconDataStreamSDK::UCPP::Client::Client(void)"

我认为这是因为 CPP 已经在虚幻引擎中定义了,但是由于头文件对 sdk 中的 .dll 文件的依赖性,命名空间的定义在 sdk 中是不可更改的。 这种期望是正确的还是我走错了路?

【问题讨论】:

    标签: c++ visual-studio sdk unreal-engine4


    【解决方案1】:

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

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

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

    #define CPP PCPP
    

    这编译和工作正常,没有问题

    【讨论】:

    • 很抱歉复活这个......我也在做同样的事情,而且效果很好......在 4.13 中。更新到 4.15,这不再有效。您是否在较新版本的引擎中解决了这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2016-09-14
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2017-02-16
    相关资源
    最近更新 更多