Pav*_*ych 7 c++ dll opencv exe visual-studio-2012
我有一个Visual Studio 12项目; 用C++编写的源代码; 这是一个OpenCV项目.我想将我编译的程序提供给其他人,但是,在其他PC上,我收到有关丢失一些dll的错误消息.我的程序使用了许多OpenCV(也许,不仅仅是)dll.我该如何解决这个问题? 也许在VS 12中可以选择在.exe中包含所有dll? 这是一个非常类似的问题没有正确答案: 在visual studio c ++ 2008中包含dll
dat*_*olf 12
DLL本身不能"静态链接"到可执行文件中; 这完全违背了他们的目的(实际上你可以使用一些非常奇怪的巫术技巧来实际做到这一点,但这既不推荐也不应该尝试,如果你不得不提出这个问题).
简单的解决方案是识别程序所需的所有DLL(只需在调试器中启动程序将生成列出所有这些的日志文件)并将这些DLL复制到EXE所在的同一目录中; 当发生这种情况时,带有EXE文件的目录也是系统在默认配置中前进到standad系统directoris之前查找DLL的第一个目录.打包并以这种方式分发.
更复杂的解决方案是,从 src 构建静态 opencv 库,然后将您的程序链接到这些库,从而产生 1 个大型二进制 exe 块,该块不使用任何 dll(除了 ffmpeg,不确定那个)。
要构建静态库,您需要运行 cmake : BUILD_SHARED_LIBS=OFF
但在这样做之前请深呼吸。链接你的程序将变得更加困难,因为现在你必须手动链接所有 zlib、libpng、任何依赖项(之前已方便地链接到你的 dll 中)
同样,最简单的解决方案是使用您的程序部署所有 opencv dll。
| 归档时间: |
|
| 查看次数: |
29652 次 |
| 最近记录: |