包装依赖以在静态库中使用

时间:2018-04-13 01:01:44

标签: c++ dll static-libraries wrapper static-linking

我有一个包含可执行项目和静态库的C ++解决方案。静态库是可执行项目的引用。

静态库需要外部依赖。我想在一个单独的解决方案中为外部依赖创建一个包装器,这样我就不必将依赖项放入我的可执行文件中。

我的静态库可以了解我的包装器,但不知道外部依赖。我想使用我的包装器为我的静态库提供一个外部依赖的接口,而不需要它知道除了包装器之外的任何东西。

我将包装器作为DLL和静态库,但我无法将其链接到我的静态库,因为Visual Studio中没有链接选项。此外,DLL包装器没有创建伴侣.lib。

我的问题:我应该在我的包装器上使用什么样的链接来为我的静态库提供一个接口来使用外部依赖,而不知道外部依赖,只有包装?我如何在我的包装器中包装所有依赖项功能,以便我的静态库除了我的包装器之外不需要任何其他的dll或lib?

我遇到的主要问题是从静态库中添加对包装器的引用。看来我只能在同一个解决方案中才能这样做。但是,如果它们在同一个解决方案中,则解决方案(和我的可执行文件)会受到外部依赖项的污染。我宁愿只包含一个文件(dll / lib),它可以从外部依赖中选择我需要的功能,而不是不必要地包含整个外部依赖。

我知道如何创建dll和lib(https://msdn.microsoft.com/en-us/library/ms235636.aspxhttps://msdn.microsoft.com/en-us/library/ms235627.aspx)以及加载它们的方法(https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175%28v=vs.85%29.aspxhttps://msdn.microsoft.com/en-us/library/7f0aews7.aspx)。我的问题更侧重于如何在dll(或lib)中包装东西,而只发出一个dll(或lib),而不是我的dll / lib需要运行的每个dll和/或lib,以及在我的如何将dll / lib链接到静态库中。

我在使用gcc编译的Windows环境中。

0 个答案:

没有答案