语境
我正在开发一个旨在向设备发送某些命令的项目。每个设备都可以与一个 dll 连接(例如 deviceADll.h、deviceBDll.h),并且这些 Dll 不是由我编写的,我也不能以任何方式修改它们。我负责将DeviceB集成到项目中,对项目结构进行最小的更改。我知道该结构可能不是最佳的和/或设计良好的,因此我愿意接受有关该问题的建议作为最后的解决方案。
由于设备非常相似,因此所有 Dll 函数都具有相同的名称,并且通常具有相同的原型。
也正因为如此,我创建了一个父类(Device_ts.h),DeviceA_ts.h和DeviceB_ts.h继承自该父类(我也有一个设备的工厂类,但我认为它与我的问题无关) 。
问题
当我尝试包含两个 Dll 时出现问题:项目编译,但我得到一个
Warning 60 warning LNK4006: Connect@12 already defined in DeviceA.lib(DeviceA.dll); second definition ignored C:\project_path\DeviceB.lib(DeviceB.dll) Project_Name
随后是一个
Warning 61 warning LNK4006: __imp__Connect@12 already defined in DeviceA.lib(DeviceA.dll); second definition ignored C:\project_path\DeviceB.lib(DeviceB.dll) Project_Name
和一个
Warning 62 warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library C:\project_path\DeviceB.lib(DeviceB.dll) Project_Name
有人经历过类似的情况吗?我应该忽略这些警告还是因为它们的定义被忽略而无法调用DeviceB.h函数? …