【问题标题】:Create one exe file with buil-in static libraries使用内置静态库创建一个 exe 文件
【发布时间】:2014-04-20 23:07:13
【问题描述】:

我在 openCV 中有项目,在 Eclipse(MinGW/Windows 8 os)下创建为 Makefile 应用程序。我需要创建一个可执行文件,以便在没有安装 openCV 的其他计算机上运行应用程序时不需要任何其他 dll。

我还将 openCV 源代码编译为静态库。这就是我的 Makefile(草稿)的样子:

all:    
    gcc -static -I"C:\opencv\build\include" -L"lib" main.c -lws2_32 -lopencv_core244.dll -lopencv_highgui244.dll -lopencv_imgproc244.dll -o bcast.exe

构建 exec 后不包含库。我做错了什么?

提前致谢。

【问题讨论】:

    标签: c eclipse opencv makefile


    【解决方案1】:

    您应该链接*.lib 文件,而不是*.dll动态-链接库)。

    所以,应该是:

    g++ -I"C:\opencv\build\include" -L"lib" main.c -lws2_32 -lopencv_core244.lib -lopencv_highgui244.lib -lopencv_imgproc244.lib -o bcast.exe
    

    (您应该考虑为此使用 g++,它是一个 c++ 库。)之后,您的 makefile 将生成 1 个 .exe 文件,没有库。

    老实说,您真的 是否静态地重新编译了 opencv 库(使用 -DBUILD_SHARED_LIBS=OFF)?我在这里有疑问。

    【讨论】:

    • 我的意思是exe文件中没有包含库。我会尝试再重新编译一次openCV。
    • 我按照你说的做了,但是在编译 openCV 应用程序时出错:g++ -static "-LC:\\MinGW\\lib" "-LC:\\opencv\\build\\x86\\mingw_static\\lib" -static-libgcc -static-libstdc++ -o qwasegf.exe main.o -lws2_32 -lopencv_core248 -lopencv_highgui248 -lopencv_imgproc248 C:\opencv\build\x86\mingw_static\lib\libopencv_core248.a(persistence.cpp.obj): bad reloc address 0x40 in section '.text$_ZL6icvEofP13CvFileStorage' c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多