我使用库来控制设备。该库是用C语言编写的。该库有一个全局变量来保存设备 ID(端口号)。该库提供了一个函数来确定我们使用哪个端口。
initialize(int deviceIndex, int baudrate)
该函数更改全局变量。所有其他函数都使用此全局变量。
我可以用这个库控制一台设备;但是,我想同时控制两个设备。
如果我使用此函数两次,全局变量就会更改,并且我会丢失一台设备。
我用 C++ 编写代码。我想知道有没有办法可以两次使用这个库,就像一个类,我们创建几个对象,甚至每个类的公共(public)变量都是独立的。
编辑:
- 有一些依赖于平台的方式。您在哪个平台?
我应该使用 Visual C++ (Windows) 和 Qt C++ (Linux Kubuntu) 编写代码
- 您可以更改该库的源代码吗?
是的,我可以,但大约有 2000 行和 4 个文件(两个 .c 和两个 .h)
最佳答案
I want to know if there is any way to use this library twice.
在一个进程中只能拥有该库及其符号(全局函数和变量)的一个实例(无论它是静态库还是共享库)。如果您需要多个进程,则生成更多进程。
您可以将此功能包装在一个类中,这样当您创建该类的对象时,它会自动为您生成一个工作子进程,并且其成员函数使用某种形式的 IPC 与该特定子进程进行通信(例如管道、套接字对、共享内存、文件等。)。
关于c++ - 隔离C库类(C++代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653258/