我有一个 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后,这个对象就被销毁了?
最佳答案
是的,这是可能的。如果你重写它。如果您只有二进制文件 - 那么您无法更改此行为。您可以通过创建一个单独的可执行文件来解决这个问题,该可执行文件将执行您想要的操作,然后退出,并通过某些 IPC 将结果传递回主程序。基本上 - 用您自己的实现包装它,该实现将为每个单独的调用有效地初始化库。
关于c++ - c lib 是 C++ 程序中的静态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512227/