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

使用Sol v3.2.1整合Lua 5.03到C++游戏引擎遇LNK2019链接错误求助

问题描述

我正尝试用Sol v3.2.1做包装器,把Lua 5.0.3整合到C++游戏引擎里。项目已经把所有文件都正确包含了,编译能过,但创建sol::state对象的时候触发了LNK2019链接错误。我对脚本整合不太熟,只是跟着教程走,不知道该怎么解决,求帮忙。

代码示例

#include "Engine.h"

#include <sol.hpp>

void TestLua()
{
    sol::state lua; // <-- 这里触发链接错误
}

int main(int argv, char* argc[])
{
    TestLua();

    return 0;
}

解决方案资源管理器文件结构

解决方案资源管理器文件结构

常见排查方向

LNK2019是未解析外部符号错误,本质是编译器能找到符号声明,但找不到对应的实现代码或库文件。针对Sol+Lua的场景,你可以从这几个方向排查:

  • Lua库未正确链接:Sol依赖Lua的静态/动态库,需要在项目设置中添加Lua的.lib文件(静态库场景),或确保动态库.dll在程序运行路径内。如果是自行编译Lua源码,要保证Lua项目的编译配置(Debug/Release、x86/x64)和游戏引擎项目完全一致,跨配置链接必然报错。
  • Sol使用模式不匹配:Sol有两种使用方式,一是直接包含头文件(需定义SOL_ALL_SAFETIES_ON等宏,同时确保Lua库链接正确),二是编译Sol源码为库再链接。如果是头文件模式,检查是否遗漏必要宏定义,或Lua库的编译选项(如C++异常、RTTI开关)与当前项目冲突。
  • 项目架构/模式不匹配:Lua库、Sol的配置和游戏引擎项目必须为同一架构(全x64或全x86),Debug和Release模式也要严格对应——Debug模式不能链接Release版Lua库,反之亦然,版本不匹配必出问题。
  • 路径配置遗漏:即便你确认已包含文件,仍需检查Lua头文件路径是否在项目的附加包含目录中,Sol头文件是否正确引入,路径错误也可能导致链接时找不到符号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:02:34