c++ - c lib 是 C++ 程序中的静态吗?

标签 c++ c static-libraries

我有一个 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/

相关文章:

c++ - G++ 链接到 Cygwin 中的 psapi

xcode4 - Xcode 4 中使用静态库的 header 管理

c++ - Qt5-QML : How to properly connect a ProgressBar with Button for long-running loop calculation

c++ - 如何正确中断 QThread 无限循环

c - 您将 sysv/posix 消息队列用于什么用途?

c - strcat 将一个字符连接到一个字符串上?

c++ - 我使用什么 C/C++ 库来更改 Windows 中的 HTTP 数据包?

c++ - 使用 MATLAB 变量作为参数从 MATLAB 脚本启动 C++ 程序

c - 需要调用.c中定义的函数到另一个.c文件

c++ - 在 .cpp 文件上链接静态库