我试图将一个定制的内置luau链接到我的游戏中,我用以下内容构建了luau : mkdir构建&& cd构建cmake。制作
在那之后,我得到了以下文件:
下一步是:
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 removedluau_integration.hpp:
/* 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
// 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文件已被修改为目录差异,
问题:
/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源代码中的一些模糊的注释。
我做错了什么?
此外,请注意文件在正确的位置。
发布于 2022-10-31 22:10:35
在Ubuntu22.04中使用clang++ 13.x和g++ 12.x,我遵循以下步骤:
git clone git@github.com/Roblox/luau.gitcd luau && mkdir build && cd build && cmake .. && make -j2#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文件是空的,或者构建得不正确,或者在简化的示例中缺少了一些东西。
https://stackoverflow.com/questions/73658935
复制相似问题