C++ 如何使用opencv和eclipse(windows)获得独立的可执行文件?

C++ 如何使用opencv和eclipse(windows)获得独立的可执行文件?,c++,eclipse,windows,opencv,static-libraries,C++,Eclipse,Windows,Opencv,Static Libraries,我已经编写了一个小程序来准备一个图像,然后由FPGA板进行处理。我需要让它在任何windows机器上运行,即使没有安装opencv。我已经阅读了很多关于堆栈溢出的教程和答案,但这些似乎都不适合我。我自己使用Cmake和MinGW编译opencv来构建静态库(.a文件)。我如何在我的项目中获得这些信息,我需要哪些信息,以及如何链接它们?似乎每次我尝试链接我以前使用过的库(当使用DLL时)时,都与其他库有某种依赖关系 提前感谢,, 辉煌 错误消息是: g++ "-LE:\\opencv\\stati

我已经编写了一个小程序来准备一个图像,然后由FPGA板进行处理。我需要让它在任何windows机器上运行,即使没有安装opencv。我已经阅读了很多关于堆栈溢出的教程和答案,但这些似乎都不适合我。我自己使用Cmake和MinGW编译opencv来构建静态库(.a文件)。我如何在我的项目中获得这些信息,我需要哪些信息,以及如何链接它们?似乎每次我尝试链接我以前使用过的库(当使用DLL时)时,都与其他库有某种依赖关系

提前感谢,, 辉煌

错误消息是:

g++ "-LE:\\opencv\\staticlibs\\lib" -static-libgcc -static-libstdc++ -mwindows -o img_prep.exe main.o -lIlmImf -ljasper -lpng -ltiff -ljpeg -lz -lopencv_highgui249 -lopencv_imgproc249 -lopencv_core249 
E:\opencv\staticlibs\lib/libopencv_highgui249.a(grfmt_jpeg.cpp.obj):grfmt_jpeg.cpp:(.text.unlikely._ZN2cvL16my_jpeg_load_dhtEP22jpeg_decompress_structPhPP9JHUFF_TBLS5_.constprop.52+0xce): undefined reference to `jpeg_alloc_huff_table'
E:\opencv\staticlibs\lib/libopencv_highgui249.a(grfmt_jpeg.cpp.obj):grfmt_jpeg.cpp:(.text$_ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0xe2): undefined reference to `jpeg_CreateCompress'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: E:\opencv\staticlibs\lib/libopencv_highgui249.a(grfmt_jpeg.cpp.obj): bad reloc address 0xe2 in section `.text$_ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
我已在MinGW链接器中链接了以下库:

这是我的密码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    if (argc != 2) {
        cout << "Usage: img_prep InputImage" << endl;
        return -1;
    }

    Mat img, img_gray;
    Size size(800,600);

    img = imread(argv[1], CV_LOAD_IMAGE_COLOR);

    if (!img.data) {
        cout << "Could not read the image!" << endl;
        return -1;
    }

    cvtColor(img, img_gray, CV_RGB2GRAY);
    resize(img_gray, img, size);

    cout << "Image successfully converted!" << endl;

    ofstream output;
    output.open("output.img", ios::binary);

    output.write((char *) img.data, img.rows * img.cols);
    output.close();

    imwrite("output.bmp", img);

    cout << "Image saved!" << endl;

    //Ergebnis anzeigen:
    namedWindow("Display", WINDOW_AUTOSIZE);
    imshow("Display", img);

    waitKey(0);
    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
int main(int argc,字符**argv){
如果(argc!=2){

无法搜索并阅读有关静态链接的内容。谢谢你的回答。我这样做了,但即使我静态链接我认为我需要用于此项目的库,仍然有一些未解决的依赖项,即使我更改了顺序,我似乎也无法解决。这就是为什么我要求提供基本指南,我认为这与ecl有关ipse和MingW您能详细说明您未解决的依赖关系吗?您有链接器错误吗?您能编辑您的问题以将其包括在这种情况下吗?我记得我有链接器错误,例如“未定义的对‘jpeg’的引用…”。根据我在MinGW链接器中添加库的顺序,链接器错误会发生变化。我会在进入开发计算机后立即添加确切的错误消息。我认为OpenCV使用的是类似内置libs的东西,因此我认为您不应该静态搜索太多的内置库。无论如何,我在Linux上尝试过这一点,但当我我已经把它移到了另一个Linux(Ubuntu->Centos)上,但它不起作用……我不知道Winsows(98、2000、NT、7、Vista、8)是否也是这样