windows下 Cython 编译成独立运行的exe程序

本文介绍如何使用Cython生成C代码,并通过cl、link命令生成exe文件。针对sciter GUI程序出现黑框的问题,提供了GCC编译的解决方法,并寻求Visual Studio下去除黑框的解决方案。

首先用Cython生成 C 代码:

py -3 -m cython main.py

然后用cl 、link 命令生成exe

cl.exe /c  /nologo /Ox /MD /W3 /GS- /DNDEBUG -IE:\Soft\Python\Python36-32\include  /Tcmain.c

link main.obj /SUBSYSTEM:CONSOLE /MACHINE:X86 /LIBPATH:E:\Soft\Python\Python36-32\libs

如果没有报错的话,就OK了

我这里用的python3 测试的sciter程序,因为是gui程序,有个黑框很不好看,但试图vs编译去黑框没有成功……

cl.exe  /nologo /Ox /MD /W3 /WL /GS- /DNDEBUG -IE:\Soft\Python\Python36-32\include  /Tcmain.c /link /SUBSYSTEM:WINDOWS /MACHINE:X86 /LIBPATH:E:\Soft\Python\Python36-32\libs

提示出错:

MSVCRT.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ) 中被引用

因为C语言水平几乎为零,网上寻找VS编译方法也是没有结果,但是找到GCC编译的方法

gcc -o main.exe main.c -IE:\Soft\Python\Python36-32\include  -L E:\Soft\Python\Python36-32\libs -lpython36 -municode -Wl,--subsystem,windows

希望对大家有帮助!
如果大家谁知道了vs下的去黑框的方法请邮件我,谢谢*(eecoor # qq.com)

### 编译Python源码于Windows环境 对于在Windows环境中编译Python源代码的需求,通常涉及设置合适的开发工具链以及编写构建脚本。当涉及到具体项目如PyTorch或其他依赖复杂库的项目时,则可能还需要额外配置特定版本的CUDA、Visual Studio以及其他必要的软件包。 #### 设置基础编译环境 为了准备编译所需的环境,在Windows平台上建议通过Anaconda来管理不同项目的独立运行环境[^2]。这不仅简化了Python及其扩展模块的安装过程,还能够有效隔离各个工作空间之间的潜在冲突。创建一个新的Conda虚拟环境可以确保所有组件都处于预期的状态之下: ```bash conda create --name myenv python=3.9.13 conda activate myenv ``` 接着,依据目标应用的具体需求,进一步安装其他必需项,比如Cython用于加速Python程序执行效率或是作为接口层连接底层C/C++实现的功能[^1]。 #### 安装编译器及相关工具 针对Windows平台上的C/C++编译任务,推荐采用Microsoft Visual Studio提供的MSVC编译套件。对于大多数情况而言,安装最新稳定版即可满足日常开发所需;然而某些特殊情况下(例如兼容旧版本API),则需考虑下载指定历史发行版本。此外,还需确认已勾选“使用C++的桌面开发”这一选项以获取完整的编程支持[^3]。 #### 构建与编译流程 一旦上述准备工作完成之后,便可以通过定制化的`setup.py`或类似的构建脚本来启动实际的编译操作。这里假设已经存在名为`cython_build.py`的文件负责处理整个过程中的各项细节——从扫描待转换的`.pyx`文件到最终产出优化后的二进制形式。此时只需简单调用如下指令便可触发本地即时编译动作: ```bash python cython_build.py build_ext --inplace ``` 此命令会读取当前目录下的`cython_build.py`并按照其中定义好的规则来进行相应的工作,包括但不限于将纯Python代码翻译成高效的机器语言表示形式以便提升性能表现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值