首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对luau_compile的未定义引用

对luau_compile的未定义引用
EN

Stack Overflow用户
提问于 2022-09-09 07:50:29
回答 1查看 51关注 0票数 0

我试图将一个定制的内置luau链接到我的游戏中,我用以下内容构建了luau : mkdir构建&& cd构建cmake。制作

在那之后,我得到了以下文件:

  • libLuau.VM.a
  • libLuau.Compiler.a
  • libLuau.CodeGen.a
  • libLuau.Ast.a
  • libLuau.Analysis.a

下一步是:

代码语言:javascript
复制
game = another game
engine_files = src/engine.c src/error/error_handler.cpp src/renderer/opengl.cpp
imgui_files = src/renderer/ui/imgui/*.cpp 
luau = -Llibs/luau/ -l:libLuau.Ast.a -l:libLuau.Analysis.a -l:libisocline.a -l:libLuau.CodeGen.a -l:libLuau.Compiler.a -l:libLuau.VM.a
build:
    g++ src/scripting/luau_integration.cpp $(engine_files) -std=c++17 -Wl,-rpath -Wl,'\$\$ORIGIN' glad.c -lm -lglfw3 -lGL -lwebp -lXrandr -lXinerama -lX11 -ldl -pthread -o bin/$(game) -L./ -l:imgui.so $(luau)
    export LD_LIBRARY_PATH=./ && cd bin && ./confidental name removed

luau_integration.hpp:

代码语言:javascript
复制
/* You are granted license to view these files, modify them, study them they are not under cc by sa though*/
namespace Scripting{
    class Lua{
        public:
            static void Integrate();
    };
}

lua_integration.cpp

代码语言:javascript
复制
// public domain
// This loads game scripts
#include "../../libs/luau/include/Compiler.h"
#include "../../libs/luau/include/BytecodeBuilder.h"
#include "../../libs/luau/include/StringUtils.h"
#include "luau_integration.hpp"
#include "../../libs/luau/include/lua.h"
#include "../../libs/luau/include/luacode.h"
#include "../../libs/luau/include/lualib.h"
#include "../../libs/luau/include/StringUtils.h"
#include "../../libs/luau/include/BytecodeBuilder.h"



struct lua_CompileOptions options;

void Scripting::Lua::Integrate () {
    size_t binarySize;
    luau_compile("print(\"e\")", 11, &options, &binarySize);
}

luau文件已被修改为目录差异,

问题:

代码语言:javascript
复制
/usr/bin/ld: /tmp/cc8XT3MW.o: in function `Scripting::Lua::Integrate()':
luau_integration.cpp:(.text+0x23): undefined reference to `luau_compile(char const*, unsigned long, lua_CompileOptions*, unsigned long*)'

链接器说出了这个错误,不管我尝试了什么,我都找不到任何关于luau安装程序的东西,但是我猜想它类似lua,考虑到项目中缺乏文档,所有这些都是通过尝试和错误完成的,并且阅读了luau源代码中的一些模糊的注释。

我做错了什么?

此外,请注意文件在正确的位置。

EN

回答 1

Stack Overflow用户

发布于 2022-10-31 22:10:35

在Ubuntu22.04中使用clang++ 13.x和g++ 12.x,我遵循以下步骤:

  1. git clone git@github.com/Roblox/luau.git
  2. cd luau && mkdir build && cd build && cmake .. && make -j2
  3. I在build目录中创建一个main.cpp文件:

代码语言:javascript
复制
#include "../Compiler/include/luacode.h"


struct lua_CompileOptions options;

int main(void) {
    size_t binarySize;
    luau_compile("print(\"e\")", 11, &options, &binarySize);
    return 0;
}

编译的clang++ main.cpp libLuau.Compiler.a libLuau.Ast.a

如果我使用替代形式,它仍然有效:clang++ main.cpp -L. -l:libLuau.Compiler.a -l:libLuau.Ast.a

我没有收到任何编译或链接警告/错误,程序运行和终止正确。我猜命令行中的-l:部分不太适合链接静态库,库路径中的.a文件是空的,或者构建得不正确,或者在简化的示例中缺少了一些东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73658935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档