我的库包括一个接口(表示照相机)和一些派生类。
每个派生被实现到特定的HW,这导致每个派生类依赖于外部供应商库。
Factory的类,它有一个方法:
ICamera* create(const std::string& type)create()是天真地实现的:
if (type == "a") return new CameraA();
if (type == "b") return new CameraB();
...因此,基本上有一个臃肿的Factory.lib包含了所有必要的依赖项,库用户只需链接到Factory.lib就可以创建任何摄像头。
问题
li #1,这并没有多大帮助,因为除了Factory.lib和供应商dll之外,您还需要所有派生dll。发布于 2012-07-10 09:10:34
您可以在运行时加载共享库(或dll)。您必须了解查找特定ICamera实现的位置(在哪个dll中)。例如,您可以导出每个dll的第二个函数,该函数准确地提供信息,具体的dll提供了哪些实现(type=="a“和type=="c")。启动应用程序时,它可以搜索dll并为每个dll调用该信息接口。
https://stackoverflow.com/questions/11409752
复制相似问题