You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio编译Unreal Engine遇E1393/E2487错误,求CARLA安装场景下的解决指引

解决CARLA编译Unreal Engine时的DLL接口声明错误

错误根源

这两个编译错误均因重复添加DLL导出/导入修饰符引发:

  • E1393:已用dllexport/dllimport标记的类,其成员被再次添加同类修饰符
  • E2487:SpillCellID作为DLL接口类的内部成员,自身又被单独标记为DLL接口

修复步骤

1. 定位错误代码位置

在Visual Studio错误列表中双击错误条目,直接跳转至对应的头文件/源文件,找到包含SpillCellID的类定义,以及触发E1393的成员声明。

2. 移除重复的DLL修饰符

  • 针对E1393:若类已通过CARLA_API(或自定义的dllexport/dllimport宏)声明,删除成员变量/函数前的同类宏。
    错误示例:
    class CARLA_API MyClass {
    public:
        CARLA_API void MyFunction(); // 重复添加修饰符,触发E1393
    };
    
    修复后:
    class CARLA_API MyClass {
    public:
        void MyFunction(); // 移除成员前的CARLA_API
    };
    
  • 针对E2487:检查SpillCellID的声明,若它是某个DLL接口类的内部成员,删除自身的dllexport/dllimport修饰符。
    错误示例:
    class CARLA_API RoadNetwork {
    public:
        CARLA_API class SpillCellID { ... }; // 成员类重复修饰,触发E2487
    };
    
    修复后:
    class CARLA_API RoadNetwork {
    public:
        class SpillCellID { ... }; // 移除SpillCellID前的CARLA_API
    };
    

3. 校验CARLA预定义宏的一致性

确保项目中CARLA_API宏的定义逻辑正确:编译DLL模块时定义CARLA_BUILDING_DLL,此时宏展开为dllexport;引用DLL时不定义该宏,宏自动展开为dllimport。宏定义混乱也会导致重复修饰问题。

4. 重新生成项目

点击Visual Studio菜单「生成」→「清理解决方案」,清理编译缓存后重新生成Unreal Engine相关的CARLA项目,验证错误是否消除。


内容的提问来源于stack exchange,提问作者Farhan Javed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:40:00