有没有办法在项目中包含dll,这样我就不必在编译后将这些dll与我的可执行文件放在同一个文件夹中。 这样我就可以用它们编译我的项目。这是否可能,如果是,有人可以指导我。
我的项目是一个opencv项目,有很多dll我必须包含在文件夹中,我不知道它们是否是.NET程序集,因为我读了另一篇文章说它可以用.NET程序集完成。
答案 0 :(得分:0)
你不能直接用DLL做。 “DLL”代表“动态链接库”,这意味着它们不是静态链接库。当你创建可执行文件时,它是后一种“包含”(链接)的库。只有在运行EXE时才包含DLL。
您可以查看CV文档,以了解如何获得CV的静态库版本。
答案 1 :(得分:0)
我知道你想要做的是部署你的exe文件及其依赖项(dll),但你也希望在项目中配置它。您可以将项目配置为使用静态库,而不必担心分发DLL,因为它们已经内置到exe中。
如果您希望使用DLL,因为您不想膨胀您的exe,那么您的代码将必须实现其加载,即调用LoadLibrary函数和对特定导出函数的必要调用。一旦你的代码实现了DLL的加载,你就可以按照你描述的方式部署它们。
答案 2 :(得分:-1)
dll被设计为动态链接 - 即它们在运行时加载了程序。
它们不必与您的应用程序位于同一个文件夹中,只是位于路径的某个位置,因此您只需要为计算机上所有基于opencv的程序提供一份opencv dll副本。
编辑:您可以构建openCV以使用静态库,但不推荐使用静态库,您仍然有外部依赖项,如ffmpeg和图像格式库,以及Qt(如果使用的话)。
在Windows上你应该构建一个可以捆绑exe和dll的安装程序。 Windows,否则每次运行应用程序时都会发出警告innosetup是最简单的。