在windows上编译疯狂的python

2024-10-04 11:35:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用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更改引用,我应该用什么来替换它们。在

^{pr2}$

Tags: 命令buildsrcincludewindowsasexeshared
1条回答
网友
1楼 · 发布于 2024-10-04 11:35:34

原始的疯狂Python代码库有许多已知的问题,上面提到的构建问题就是其中之一。不幸的是,如果最后一次修改日期here有任何指示的话,原作者似乎并没有继续维护这个项目。在

如果你还在试着让它发挥作用,我强烈建议你用一个最近的叉子。尤其是,Lunantic-Python fork at github包含了我的许多修复改进。在

回到您的问题,许多未定义的引用都是由于头中不正确的forward声明造成的,或者是由于定义的宏导致forward声明不正确。例如,原始的luainpython.h包含:

PyAPI_DATA(PyTypeObject) LuaObject_Type;

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

^{pr2}$

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

还要注意,luaopen_loadlib在Lua5.1中被弃用,这解释了您得到的另一个未定义的引用。事实上,疯狂的python对以下内容的使用都是不赞成的:

^{3}$

应该改为:

luaL_openlibs(L);

相关问题 更多 >