gpt4 book ai didi

c++ - 在 Eclipse Windows 中链接 OpenCV 静态库

转载 作者:行者123 更新时间:2023-11-28 03:18:34 26 4
gpt4 key购买 nike

我想创建一个可执行文件,我可以将其移动到另一台未安装 OpenCV 的计算机上。

因此,我试图将所有需要的库静态链接到可执行文件中(这就是所谓的对吗?)。该程序编译得很好,可以在我的本地计算机上运行,​​但是当我将它复制到另一台计算机时,它会提示它缺少 .dll 文件并且不会执行。

我在 Windows 7 上使用带有 mingw 的 eclipse juno 作为编译器。

目前我的进展:我已将 opencv\build\x86\mingw\lib 所需的库包含到 MinGW C++ 链接器 -> 项目属性中的库中。

opencv_core244.dll
opencv_highgui244.dll
opencv_imgproc244.dll

在原始文件夹中,这些被称为:

libopencv_core244.dll.a
libopencv_highgui244.dll.a
libopencv_imgproc244.dll.a

我已经在 MinGW C++ Linker -> miscellaneous 中将链接器标志设置为 -static。

我一直在寻找答案并尝试了一些不同的方法,但我真的被这个难住了。

如何强制 eclipse 中的编译器(在本例中为 MinGW)将库链接为静态库而不是动态库?​​

最佳答案

1) 如果 OpenCV 已被编译为用作 DLL,则不能静态链接。

2) 请记住,当您为 DLL 输出编译项目时,您会有一个 .lib 文件。这个 .lib 文件实际上并不是一个带有代码的静态库。编译器使用它来了解类/函数定义的 DLL 名称。这将在运行时需要 DLL。

3) 对于静态链接,您需要编译为静态库的.lib 文件。在这样的编译中,只有一个输出是一个 .lib 文件。此 .lib 文件可用于静态链接,并将 .lib 文件中的代码添加到您的应用程序中。

4) 我刚刚用VStudio 编译了一个项目,它是一个只有一个函数的DLL。我得到一个 DLL 和一个 .lib 作为输出。 .lib 的大小为 2kb。

5) 当我将同一个项目编译为静态库时,我只得到一个输出,即 .lib 文件。它的大小是 133kb。

关于c++ - 在 Eclipse Windows 中链接 OpenCV 静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com