2024-10-04 11:35:34 发布
网友
我正试图用minigw在windows上编译疯狂的python。命令如下:
gcc.exe -shared -DLUA_BUILD_AS_DLL src\luainpython.c src\pythoninlua.c liblua.a libpython27.a -IC:\Python27\include -IC:\LUA\include
这给了我未定义的引用错误。但是我找不到任何luaapi更改引用,我应该用什么来替换它们。在
原始的疯狂Python代码库有许多已知的问题,上面提到的构建问题就是其中之一。不幸的是,如果最后一次修改日期here有任何指示的话,原作者似乎并没有继续维护这个项目。在
如果你还在试着让它发挥作用,我强烈建议你用一个最近的叉子。尤其是,Lunantic-Python fork at github包含了我的许多修复改进。在
回到您的问题,许多未定义的引用都是由于头中不正确的forward声明造成的,或者是由于定义的宏导致forward声明不正确。例如,原始的luainpython.h包含:
luainpython.h
PyAPI_DATA(PyTypeObject) LuaObject_Type;
在windows中,经过预处理后,它将扩展为:
换句话说,链接器将尝试从导入库中找到LuaObject_Type的定义。这当然是错误的,因为新类型是由lunatic在luainpython.c中创建和实现的。正确的原型应该是extern PyTypeObject LuaObject_Type;。在
LuaObject_Type
luainpython.c
extern PyTypeObject LuaObject_Type;
还要注意,luaopen_loadlib在Lua5.1中被弃用,这解释了您得到的另一个未定义的引用。事实上,疯狂的python对以下内容的使用都是不赞成的:
luaopen_loadlib
应该改为:
luaL_openlibs(L);
原始的疯狂Python代码库有许多已知的问题,上面提到的构建问题就是其中之一。不幸的是,如果最后一次修改日期here有任何指示的话,原作者似乎并没有继续维护这个项目。在
如果你还在试着让它发挥作用,我强烈建议你用一个最近的叉子。尤其是,Lunantic-Python fork at github包含了我的许多修复改进。在
回到您的问题,许多未定义的引用都是由于头中不正确的forward声明造成的,或者是由于定义的宏导致forward声明不正确。例如,原始的
luainpython.h
包含:在windows中,经过预处理后,它将扩展为:
^{pr2}$换句话说,链接器将尝试从导入库中找到
LuaObject_Type
的定义。这当然是错误的,因为新类型是由lunatic在luainpython.c
中创建和实现的。正确的原型应该是extern PyTypeObject LuaObject_Type;
。在还要注意,
^{3}$luaopen_loadlib
在Lua5.1中被弃用,这解释了您得到的另一个未定义的引用。事实上,疯狂的python对以下内容的使用都是不赞成的:应该改为:
相关问题 更多 >
编程相关推荐