Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用cython和wine在Linux上创建可执行窗口_Python_Linux_Cross Compiling_Cython_Wine - Fatal编程技术网

Python 使用cython和wine在Linux上创建可执行窗口

Python 使用cython和wine在Linux上创建可执行窗口,python,linux,cross-compiling,cython,wine,Python,Linux,Cross Compiling,Cython,Wine,我是法国人,请原谅我的英语 我可以用这行代码在linux上制作并使用pyd(dll)文件 cython -o script.c script.pyx i586-mingw32msvc-gcc script.c -Wall -I/home/User/.wine/drive_c/Python34/include -shared -o script.pyd /home/User/.wine/drive_c/Python34/libs/libpython34.a 它工作得很好 然而,我测试了这一行以

我是法国人,请原谅我的英语

我可以用这行代码在linux上制作并使用pyd(dll)文件

cython -o script.c script.pyx

i586-mingw32msvc-gcc script.c -Wall -I/home/User/.wine/drive_c/Python34/include -shared -o script.pyd /home/User/.wine/drive_c/Python34/libs/libpython34.a
它工作得很好

然而,我测试了这一行以在Linux上创建可执行窗口,但它不起作用。为什么?

我的路线:

cython --embed -o script.c script.pyx

i586-mingw32msvc-gcc -c -I/home/User/.wine/drive_c/Python34/include -L/home/User/.wine/drive_c/Python34/libs script.c -o script.exe
编辑:返回,该文件是错误格式的可执行文件

EDIT2:彼得的建议

i586-mingw32msvc-gcc -I/home/User/.wine/drive_c/Python34/include /home/User/.wine/drive_c/Python34/libs/libpython34.a script.c -o script.exe
i586-mingw32msvc-gcc -municode -I/home/User/.wine/drive_c/Python34/include /home/User/.wine/drive_c/Python34/libs/libpython34.a script.c -o script.exe
-c选项和libpython34.a添加

结果

undefined reference to `_WinMain@16'
EDIT3:彼得的建议

i586-mingw32msvc-gcc -I/home/User/.wine/drive_c/Python34/include /home/User/.wine/drive_c/Python34/libs/libpython34.a script.c -o script.exe
i586-mingw32msvc-gcc -municode -I/home/User/.wine/drive_c/Python34/include /home/User/.wine/drive_c/Python34/libs/libpython34.a script.c -o script.exe
-增加市政编码选项

结果

cc1: error: unrecognized command line option "-municode"
EDIT4

cc1: error: unrecognized command line option "-municode"
我将script.c中的“wmain”替换为“main”,这是一个错误_WinMain@16已消除,但仍存在类型错误

/tmp/ccVWy25J.o:script.c:(.text+0x1084): undefined reference to `__imp__PyObject_Call'
/tmp/ccVWy25J.o:script.c:(.text+0x1186): undefined reference to `__imp__PyTuple_Pack'
/tmp/ccVWy25J.o:script.c:(.text+0x1218): undefined reference to `__imp__PyOS_snprintf'

提前感谢,

-c
仅编译,不链接。因此,您要求它生成的
.exe
文件无法运行,因为它实际上是一个
.obj
文件。您需要从命令行中删除此参数。但是,您还需要重新添加
libpython34.a
引用,否则代码将无法链接,因为它将丢失对该库的引用。@Petesh,谢谢。。。请参见我的编辑,出现另一个错误,该错误是由
.c
文件中定义的wmain引起的。如果您尝试使用
-municode
进行编译,则可能有效,否则您可以编辑文件并交换main/wmain的定义(这将使其进行编译,但会中断命令行解析)@Petesh,已编辑的版本,感谢像
-municode
这样的代码在32位编译器上不受支持-有关潜在的解决方法,请参阅前面链接的问题。这是一个mingw编译器和python3的东西。
-c
只编译,不链接。因此,您要求它生成的
.exe
文件无法运行,因为它实际上是一个
.obj
文件。您需要从命令行中删除此参数。但是,您还需要重新添加
libpython34.a
引用,否则代码将无法链接,因为它将丢失对该库的引用。@Petesh,谢谢。。。请参见我的编辑,出现另一个错误,该错误是由
.c
文件中定义的wmain引起的。如果您尝试使用
-municode
进行编译,则可能有效,否则您可以编辑文件并交换main/wmain的定义(这将使其进行编译,但会中断命令行解析)@Petesh,已编辑的版本,感谢像
-municode
这样的代码在32位编译器上不受支持-有关潜在的解决方法,请参阅前面链接的问题。这是一个mingw编译器和python3的东西。