C- luajit在Windows Mingw64上编译Lua -lzma



所以我有一个项目需要lzma减压,因此我搜索了搜索并找到了这个项目https://github.com/rainfiel/lua/lua-lua-lzma
经过一些戳戳之后,我设法将其编译为发现它是为LUA 5.2编写的,因此我更改了一些线以解决该问题。在llzma.c文件中,我将luaL_newlib(L, l);行更改为luaL_register(L, "lzma", l);,评论了luaL_checkversion(L);,然后将size_t len = lua_rawlen(L, 1);更改为size_t len = lua_objlen(L, 1);等。
我的makefile看起来像这样

all: lzma.dll
lzma.dll: LzFind.o LzAlloc.o LzmaDec.o LzmaEnc.o LzmaLib.o llzma.o
    gcc -O -shared -o lzma.dll llzma.o LzmaLib.o LzmaEnc.o LzmaDec.o 
LzFind.o LzAlloc.o -L"..bin" -llua51
LzFind.o: LzFind.c
    gcc -O2 -c LzFind.c 
LzAlloc.o: LzAlloc.c
    gcc -O2 -c LzAlloc.c 
LzmaDec.o: LzmaDec.c
        gcc -O2 -c LzmaDec.c 
LzmaEnc.o: LzmaEnc.c
    gcc -O2 -c LzmaEnc.c 
LzmaLib.o: LzmaLib.c    
    gcc -O2 -c LzmaLib.c 
llzma.o:   llzma.c
    gcc -I..luajitsrcsrc -O2 -c -o llzma.o llzma.c

我得到了编译,但是当我尝试通过需要加载它时,我会收到此消息:

> require 'lzma'
error loading module 'lzma' from file '.lzma.dll':
    The specified procedure could not be found.
stack traceback:
    [C]: at 0x66dd6c40
    [C]: in function 'require'
    stdin:1: in main chunk
    [C]: at 0x00401f80

我进行了更多搜索,并遇到了此http://lua-users.org/lists/lua-l/2013-03/msg00363.html
但是,当我做垃圾箱时,luaopen_lzma功能就在那里,所以它似乎已被导出。我在这里彻底困惑。我在二进制图书馆等方面没有太多经验,所以这让我感到困扰。我希望能够编译和使用此库,而不必写自己的库。有人知道我在做什么吗?

我解决了我的问题,最初是我编译的,忘了链接llzma.c.c,这样它没有任何lua api代码,我将其放在二进制文件夹中的二进制文件夹中,但没有't看到dll,没有加载它,所以我将其放在工作目录中,并且似乎有效。从那时起,我将其放在工作目录中,并将旧的旧文件夹留在bin文件夹中,从那时起,它似乎在bin文件夹中找到了dll,并从该文件夹中加载。因此,当我从bin文件夹中删除它时,它可以工作...
因此,这是我的完全失败和监督,对不起,每个人都用来帮助我解决问题的时间,这只是表明我在这方面的经验不足。

最新更新