Вот мой код (первый код DisplayImage.cpp в документации OpenCV)
/*
* DisplayImage.cpp
*
* Created on: Dec 25, 2011
* Author: Arcturus */
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv){
Mat image;
image = imread(argv[1], 1);
if(argc!=2 || !image.data){
cout<<"no image data";
return -1;
}
namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", image);
waitKey(10000);
return 0;
}
Сборка завершена, исполняемый файл сгенерирован, сгенерированы двоичные файлы.
У меня есть изображение - blackbuck.bmp - в папке отладки DisplayImage. Чтобы запустить код, я иду в Run> Run Configurations. Выберите exe-файл отладки DisplayImage, введите blackbuck.bmp (также пробовал с абсолютным путем) и запустите его.
В верхней части консоли появляется сообщение: DisplayImage Debug. И это не отображает изображение вообще. Что здесь может быть не так?
Я запускаю его на Eclipse, используя CDT.
Спасибо за ваше время!
РЕДАКТИРОВАТЬ: Проблема решена !!! Мне пришлось скопировать все файлы DLL из папки библиотеки в папку, в которой генерируется мой исполняемый файл. Я до сих пор не понимаю, почему, хотя. В конце концов, компоновщик уже связывал папку библиотеки, содержащую все библиотеки DLL. Если бы кто-то мог объяснить это, это было бы очень полезно для будущей отладки. Спасибо, Карл и Мевотрон, за ваше время :)
РЕДАКТИРОВАТЬ 2: С веб-сайта MSDN:
«Потенциальным недостатком использования DLL является то, что приложение не является автономным; оно зависит от существования отдельного модуля DLL. Система завершает процессы, используя динамическое связывание во время загрузки, если им требуется DLL, которая не обнаруживается при запуске процесса и выдает сообщение об ошибке пользователю. Система не завершает процесс, используя динамическое связывание во время выполнения в этой ситуации, но функции, экспортируемые отсутствующей DLL, недоступны программе. "
Я думаю, что это отвечает на мой вопрос. Возможно, это означает, что eclipse использует динамическое связывание во время загрузки.