gpt4 book ai didi

python - 在 Windows 上编译 lunatic python

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:41 25 4
gpt4 key购买 nike

我正在尝试使用 minigw 在 Windows 上编译 lunatic python。命令如下:

 gcc.exe -shared -DLUA_BUILD_AS_DLL src\luainpython.c src\pythoninlua.c liblua.a
libpython27.a -IC:\Python27\include -IC:\LUA\include

这给了我 undefined reference 错误。但是我找不到任何 lua api 更改引用,我应该用什么替换这些。

src\luainpython.c:350:14: warning: 'LuaObject_Type' redeclared without dllimport
attribute after being referenced with dll linkage [enabled by default]
C:\Users\Wiz\AppData\Local\Temp\cccm0nAN.o:luainpython.c:(.text+0x7a): undefined
reference to `lua_strlen'
C:\Users\Wiz\AppData\Local\Temp\cccm0nAN.o:luainpython.c:(.text+0x557): undefine
d reference to `_imp__LuaObject_Type'
C:\Users\Wiz\AppData\Local\Temp\cccm0nAN.o:luainpython.c:(.text+0xc3a): undefine
d reference to `luaL_getn'
C:\Users\Wiz\AppData\Local\Temp\cccm0nAN.o:luainpython.c:(.text+0x1036): undefin
ed reference to `luaopen_loadlib'
c:/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.7.1/../../../../i686-w64-mingw32/bi
n/ld.exe: C:\Users\Wiz\AppData\Local\Temp\cccm0nAN.o: bad reloc address 0x0 in s
ection `.data'
collect2.exe: error: ld returned 1 exit status

最佳答案

原始的 Lunatic-Python 代码库有许多已知问题——您在上面遇到的构建问题就是其中之一。不幸的是,似乎原作者仍在维护这个项目——如果最后修改日期 here有任何迹象。

如果您仍在尝试让它工作,我强烈建议您使用最近的分支之一。特别是 Lunantic-Python fork at github结合了我的许多修复改进。

回到您的问题,许多 undefined reference 是由于 header 中的前向声明不正确或由于定义的宏导致前向声明不正确。比如原来的luainpython.h包含:

PyAPI_DATA(PyTypeObject) LuaObject_Type;

在 Windows 中,经过预处理后它扩展为:

extern __declspec(dllimport) PyTypeObject LuaObject_Type;

换句话说,链接器将尝试从导入库中找到 LuaObject_Type 的定义。这当然是错误的,因为该新类型是由 luainpython.c 中的 lunatic 创建和实现的。正确的原型(prototype)应该是 extern PyTypeObject LuaObject_Type;

另请注意 luaopen_loadlib 在 Lua5.1 中已弃用,这解释了您获得的其他 undefined reference 。事实上,lunatic-python 对以下内容的使用都已弃用:

luaopen_base(L);
luaopen_table(L);
luaopen_io(L);
luaopen_string(L);
luaopen_debug(L);
luaopen_loadlib(L);

应该替换为:

luaL_openlibs(L);

关于python - 在 Windows 上编译 lunatic python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com