C++嵌入python开发python38.lib存在的意义

C++嵌入python开发 Python.h代码中没有找到他依赖了python38.dll,只有看到依赖了python38.lib的代码。

一个是动态链接库,一个是静态链接库。

我使用C++编译好的软件。竟然需要附带python38.dll。。那 python38.lib静态编译的意义在哪?

为什么在Python.h 的头文件中。包括他的内部引入的其他文件。也都没找到对于python38.dll的调用。可能是我技术不到位,没找到吧。

最好不要在安装有python环境中去测试。一定要单独拷贝python安装目录的所有文件。并且卸载python 删除环境变量。才可以测试出正确结果。

因为有几天的时间内,我以为。并不需要携带python38.dll的。后来才发现。是环境变量影响了结果。

该回答引用ChatGPT
请参考下面的解决方案,如果有帮助,还请点击 “采纳” 感谢支持!
静态链接库(.lib)在编译时直接嵌入到可执行文件中,而动态链接库(.dll)在程序运行时动态加载。因此,在使用静态链接库编译的程序中,不需要附带相应的动态链接库,因为所需的所有函数都已经嵌入到可执行文件中了。但是,如果使用的是动态链接库,则需要在运行程序时加载相应的动态链接库,因此需要附带python38.dll文件。在没有安装python环境的系统中,可能需要拷贝所有python文件,包括python38.dll。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: (python)利用python调用lib静态库--基于vs2019打包dll动态库中的 二、在c++中调用生成的.lib静态库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在vs2019中新建一个空项目,把模式调整到x64的模式,在项目的相对路径下新建一个文件夹,用来存放我们自定义lib库的资料:
    在这里插入图片描述
    在其下一级目录,分别再新建一个lib文件夹和include文件夹,将第一步中的头文件和生成的lib文件,分别放入include文件夹和lib文件夹。

    在这里插入图片描述
    新建c++文件,输入一下代码:

    #include<iostream>
    #include<stdlib.h>
    #include<testlib.h>
    using namespace std;
    
    int sum(int a, int b, int c)
    {
    	//调用自定义lib库中的函数
    	return add(a, b)+c;
    }
    
    int main()
    {
    	
    	cout << sum(1, 2, 3) << endl;
    	system("pause");
    	return 1;
    }
    
    

    在引入的自定义头文件处会报错,且识别不到add()函数,我们需要在项目的属性中配置一下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    运行结果:
    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^