求助:使用VS2015编译pywin32中PythonService.cpp生成pythonservice.exe
编译pythonservice.exe的完整解决方案
我来帮你一步步搞定编译pythonservice.exe的问题,基于你已经准备好的VS2015社区版、Python2.7 32位和pywin32源码:
1. 完善库目录配置
首先,你的项目库目录需要补充以下关键路径,才能找到编译依赖的静态库:
C:\Python27_32bit\libs:Python官方提供的编译依赖库所在目录- 如果你已经编译过pywin32的核心模块,添加
C:\pywin32-master\win32\build\lib.win32-2.7;如果还没编译其他模块,添加C:\pywin32-master\win32\src(部分依赖头文件和临时库在这里)
操作步骤:
右键项目 → 属性 → 配置属性 → VC++目录 → 库目录,点击编辑按钮添加上述路径
2. 调整项目类型与编译宏设置
pythonservice.exe是Windows服务程序,不是控制台程序,所以需要修改项目子系统:
- 右键项目 → 属性 → 配置属性 → 链接器 → 系统 → 子系统,选择
Windows (/SUBSYSTEM:WINDOWS)而非控制台子系统
另外,必须添加必要的预处理器宏,否则源码中的服务逻辑不会被正确编译:
- 右键项目 → 属性 → 配置属性 → C/C++ → 预处理器 → 预处理器定义,添加:
WIN32;_WINDOWS;PYTHON_SERVICE;UNICODE;_UNICODE
3. 配置链接器依赖项
链接阶段需要明确指定依赖的库文件,否则会出现"无法解析的外部符号"错误:
- 右键项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖项,添加:
python27.lib;pywintypes.lib;pythoncom.lib
注意:如果还没编译pywin32的核心模块(pywintypes、pythoncom),可以从已安装的pywin32包中找到对应库文件,通常在
C:\Python27_32bit\Lib\site-packages\pywin32_system32目录下
4. 编译与常见问题排查
完成上述设置后,尝试编译项目:
- 如果遇到
未定义标识符错误:检查预处理器宏是否添加完整,或者包含目录是否覆盖了所有需要的头文件 - 如果遇到链接错误:确认库目录包含了对应
.lib文件的路径,或者附加依赖项没有遗漏必要的库 - 务必确保项目是Win32平台(不是x64),因为你使用的是32位Python,平台不匹配会导致编译或链接失败
编译成功后,生成的pythonservice.exe会在项目的输出目录(默认是Debug或Release文件夹)中。
内容的提问来源于stack exchange,提问作者alexeik
相关产品推荐
相关产品推荐

