我有一个c lib,algo.lib,我需要在我的c ++程序中调用它。我意识到algo.lib中的变量是静态的,当我多次调用algo.lib或者使用线程同时调用algo.lib时,这会给我的c ++程序带来问题。
例如,在algo.lib中,有一个int a
,其初始值设置为0.当我第一次调用algo.lib时,a将设置为1000.但是当我调用algo.lib时另一次,我希望algo.lib中的变量处于初始状态,即a = 0而不是a = 1000。
是否有可能使algo.lib成为面向对象的,所以当我调用它的函数时,它被创建为一个对象并被设置为其初始状态?完成运行algo.lib后,这个对象被破坏了吗?
答案 0 :(得分:4)
是的,有可能。如果你重写它。如果您只有二进制文件 - 则无法更改此行为。您可以通过创建一个单独的可执行文件来解决它,该可执行文件将执行您想要的操作然后退出,并通过某些IPC将结果传递回主程序。基本上 - 用你自己的实现包装它,这将有效地为每个单独的调用初始化库。