静态与动态链接需要建议

tur*_*nip 2 c++ python dll static-libraries

我有一个Python代码,需要能够执行C++代码.我是创建库的想法的新手,但从我到目前为止所学到的知识,我需要知道是否需要使用静态或动态链接.

我已经阅读了两者的优点和缺点,但是有很多行话,我还不明白,因为我需要尽快做到这一点,我想知道是否有人可以解释这个问题.它对我而言.

所以情况就是这样.我的C++代码生成一些包含数据的文本文件.然后我的Python代码使用这些文本文件来绘制数据.作为入门者,我需要能够直接从Python运行C++代码.DLL比SL更合适吗?还是我咆哮着完全错误的树?

额外:是否可以直接从Python编辑我的C++代码中的变量,编译并执行它?

Den*_*nis 5

这取决于您所需的部署.如果使用动态链接,则需要仔细管理路径上的库(.so,.dll),并确保加载了正确的版本.如果您在文件名中包含版本号,这可能会有所帮助,但那有其自身的问题(安全性......显示代码的版本号是一个坏主意).另一个好处是,只要接口没有改变,您就可以交换库功能而无需重新编译.

静态链接在概念上更简单,实际上更简单.您只需部署一个人工制品(.exe例如).我建议您从此开始,直到您需要转移到更复杂的共享库设置.

编辑:我不明白你的"额外信用"问题."编辑值"是什么意思?如果您的意思是可以修改在C++代码中声明的变量,那么只要您使用部分公共接口来执行它就可以.顺便说一句,这个建议是为了一般性的决定.如果您从Python链接到C/C++,我认为您需要使用共享库.不确定,因为我自己没有这样做.

编辑:扩展"公共接口".当您创建任何类型的C++库时,您可以指定外部类可用的函数(查找如何使用它).这就是我所说的公共界面.您的库的某些部分是不可访问的,但是其他(您指定的)可以从客户端代码(即您的python脚本)调用.这允许您修改存储在内存中的值.

如果你的意思是想要在你的python中编辑实际的C++代码,我建议你重新设计你的应用程序.您应该能够通过提供适当的配置来自定义C++库的运行时行为.

如果你举一个可靠的例子,我们就能给你更好的建议.