`
dqifa
  • 浏览: 116361 次
社区版块
存档分类
最新评论

静态编译python为静态库并嵌入到C++中

 
阅读更多

静态编译python为静态库嵌入到C++

 

1、下载 python2.7.6版本源代码(http://www.python.org/ftp/python/2.7.6/

2、解压到Python-2.7.6文件夹

3、进入Python-2.7.6\PC\VS8.0文件夹,用Microsoft Visual Studio 2010打开解决方案 pcbuild.sln

4、切换到Release模式

5、更改C/C++—代码生成—运行库:多线程(/MT

6、更改配置属性—配置类型:静态库(.lib

7、更改配置属性—目标文件名:bin\python27.lib

8、在pythoncore中添加Modules文件夹中的getbuildinfo.c文件

9、打开PC文件夹中dl_nt.c文件,删除第14行的#ifdef Py_ENABLE_SHARED和第106行的#endif /* Py_ENABLE_SHARED */

10、先分别编译make_buildinfomake_versioninfo,再编译pythoncore生成python27.lib

11、在Python-2.7.6文件夹下建立一个空的新解决方案pythonTest.sln

12、添加一个文件main.cpp

内容如下

#include <python.h>

#include <stdio.h>

 

int main()

{

       Py_Initialize();

       PyRun_SimpleString("print '\\nPython静态库编译成功!'");

       Py_Finalize();

       getchar();

       return 0;

}

13、配置pythonTest工程

        C/C++项的附加包含目录中添加:..\..\Include..\..\PC两个目录

        C/C++—预处理器—预处理器定义中添加一个宏: Py_NO_ENABLE_SHARED

        更改C/C++—代码生成—运行库:多线程(/MT

        设置链接器—附加库目录中添加:..\..\\PC\VS8.0\bin目录

        设置链接器—输入—附加依赖项:python27.lib

14、执行编译,生成 exe文件为:pythonTest.exe

成功!!!!!!!!!!!!!!!!!!!!!

 

分享到:
评论

相关推荐

    c++嵌入python

    在VS2003中,我们需要先下载Python的头文件和库文件,将其包含到项目中,以便编译时链接Python的动态链接库(通常为`pythonXX.lib`,其中`XX`代表Python版本号)。 接下来,我们创建一个C++项目,定义一个C++函数,...

    C++调用Python Miniconda虚拟环境

    本文将详细讲解如何在C++中调用安装在Miniconda虚拟环境中的Python函数,并讨论如何在应用程序打包时一并包含Python环境,以便于部署。 首先,让我们了解**Miniconda**。Miniconda是Anaconda公司提供的一个小型版本...

    arm-hisiv500-linux编译的python3.9及其库文件,可以直接在海思平台上运行

    - 开发头文件和库:对于开发者来说,这些是必要的,用于在海思平台开发Python扩展模块或嵌入Python到C/C++项目中。 - 静态链接库:为了在没有完整Python环境的系统上运行,这些库可能已静态链接到Python解释器中。 ...

    003-C++matplotlibcpp配置、使用及发布(第三方无需安装python即可运行)

    这意味着在编译过程中,所有依赖的Python库都会被嵌入到最终的可执行文件中。这可能涉及使用特定的编译选项,如`-static`,以及处理可能的依赖冲突和版本兼容性问题。 5. **环境隔离**:为了实现Python环境的隔离,...

    python_27的调试库(包括lib和dll)

    `python27_d.dll`是动态链接库,包含调试版本的Python运行时,而`python27_d.lib`是对应的静态库文件,用于在编译C/C++扩展模块时链接到调试版本的Python接口。 在实际使用这些调试库时,开发者需要确保他们的项目...

    VC项目调用Python文件脚本

    在实现"无需安装Python环境就能使用python脚本"时,我们可以采用以下策略:一是静态编译Python库到VC项目中,这样整个程序就包含了运行Python所需的全部依赖;二是使用预编译的Python环境,如Python的独立可执行文件...

    python27.lib.zip

    `python27.lib` 文件是用于 C 或 C++ 应用程序的,当这些应用程序需要与 Python 解释器进行交互或嵌入 Python 解释器时,它们会链接到这个静态库。这个库包含了许多预编译的函数,这些函数允许 C/C++ 代码创建和管理...

    python27_d.lib python27.lib python27_d.dll python27.dll windows linux 源码

    这些是静态链接库文件,主要用于C或C++程序在Windows上与Python进行交互。`.lib`文件是Microsoft Visual Studio编译器生成的,它们包含了Python 2.7的API函数定义,使得外部程序可以在编译时直接嵌入Python的功能。`...

    ffmpeg动态库、静态库,64位windows版

    静态库将库的功能直接嵌入到应用程序中,避免了运行时对动态库的依赖。这使得程序更独立,但也会增加生成可执行文件的大小。 4. **支持的文件格式** 提供的FFmpeg库特别指出支持MP4、AVI和MOV三种文件格式。这些...

    c cpp php java1.8 python3.8 中文帮助文档.zip

    1. **C语言**:是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。C语言以其高效、灵活性和可移植性闻名,被广泛用于系统编程、嵌入式开发、驱动编写等...

    如何将Superset图表嵌入html

    这是因为Superset中的一些依赖需要通过Microsoft Visual C++编译器来编译。其次,可能会遇到sasl库安装问题,解决方法是下载并安装对应的whl文件。 安装完Superset后,需要创建一个管理员账号,并进行数据库的初始...

    gcc-python-plugin:将CPython嵌入到编译器中的GCC插件

    通过嵌入CPython解释器,用户可以利用Python丰富的库和强大的数据结构来处理编译时的信息,从而实现更加灵活的编译器扩展。 1. **CPython嵌入** CPython是Python编程语言的标准实现,它是用C语言编写的。`gcc-...

    最新版python Python-3.6.12.tgz

    Python 3.6.12还引入了类型注解(Type Annotations),这是一种静态类型系统,虽然Python本身是动态类型的,但类型注解可以为代码提供更清晰的文档,帮助IDE和工具进行类型检查,提高代码质量。例如: ```python ...

    python373文档-documentation

    12. **扩展和嵌入**:如何为Python编写C或C++扩展,以及如何在其他应用程序中嵌入Python解释器。 13. **Python的开发工具**:包括调试器pdb、模块分析器modulefinder,以及标准库中用于开发和测试的工具。 14. **...

    Python库 | treelite-0.1a13-cp27-cp27m-win_amd64.whl

    3. 编译生成库:将生成的C++代码编译为动态链接库或静态库。 4. 预测:在目标环境中加载库,通过提供的API进行预测。 总的来说,`treelite`是一个强大的工具,它降低了机器学习模型部署的复杂度,使模型能够在各种...

    Python库 | wllvm-1.1.4.tar.gz

    它支持多种编程语言,并被广泛用于高性能计算、嵌入式系统以及静态编译和动态编译环境。LLVM的灵活性使得开发者可以深入地定制编译流程,从而实现各种优化策略。 **wllvm工作原理** `wllvm`的工作方式是在编译过程...

    C++编译的软件运行丢失 api-ms-win-crt-runtime-l1-1-0.dll解决方法,运行时库 2017.rar

    2. **打包应用程序时包含运行时库**:开发者可以选择静态链接库,即将运行时库的代码直接嵌入到应用程序中,这样就不需要依赖外部的dll文件。但这种方法会使应用程序体积增大。 3. **使用依赖检查工具**:开发者...

    python3.5.4源代码

    这个源代码是使用Visual Studio 2010(VS2010)编译器成功编译的结果,这意味着它是为Windows平台优化的。在深入探讨Python 3.5.4的特性之前,我们先来了解一下Python和VS2010的基本概念。 Python是一种高级、解释...

    python-3.8.6-embed-amd64

    “embed”版本的Python通常用于创建独立的可执行文件或嵌入到其他应用程序中。这个版本包含Python解释器、标准库和其他必要组件,使得在没有全局Python环境的情况下也能运行Python代码。这对于分发自包含的应用程序...

    python入门培训

    - 嵌入到其他应用中,可与C/C++、Delphi结合,调用DLL等。 #### Python开发环境和工具 Python有多种集成开发环境(IDE)和编辑器可供选择,包括但不限于: - **IDLE:** Python自带的集成开发环境,支持交互模式。 ...

Global site tag (gtag.js) - Google Analytics