я пытаюсь получить opencv c ++ программа, которая работает на моем ноутбуке, на моем оборудовании — кроме того, я должен отметить, что я новичок во встроенном программировании.
Может кто-нибудь может мне помочь, потому что у меня возникли проблемы при кросс-компиляции с VisualGDB. Я использую следующую доску: Cubieboard 3 (Cubietruck— Двухъядерный A20)
Цепочка для инструментов хранится локально, поэтому не на самой плате.
Все библиотеки включены и обнаружены в Visual Studio -> взгляните на снимок экрана:
«opencv_world320d.lib«- Библиотека включает в себя все необходимые под-библиотеки — я обнаружил, что Вот
Сам код C ++:
#include "opencv2/highgui/highgui.hpp"#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char** argv)
{
Mat img(500, 1000, CV_8UC3, Scalar(0, 0, 100)); //create an image ( 3 channels, 8 bit image depth, 500 high, 1000 wide, (0, 0, 100) assigned for Blue, Green and Red plane respectively. )
if (img.empty()) //check whether the image is loaded or not
{
cout << "Error : Image cannot be loaded..!!" << endl;
//system("pause"); //wait for a key press
return -1;
}
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); //create a window with the name "MyWindow"imshow("MyWindow", img); //display the image which is stored in the 'img' in the "MyWindow" window
waitKey(0); //wait infinite time for a keypress
destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow"
return 0;
}
Когда я пытаюсь построить компоновщик не удается с помощью следующего сообщения:
1>------ Erstellen gestartet: Projekt: LinuxProject2, Konfiguration: Debug VisualGDB ------
1> Linking VisualGDB/Debug/LinuxProject2...
1> VisualGDB/Debug/LinuxProject2.o: In function `cv::String::String(char const*)':
1>C:\OpenCV-3.2.0\opencv\build\include\opencv2\core\cvstd.hpp(622): error : undefined reference to `cv::String::allocate(unsigned int)'
1> VisualGDB/Debug/LinuxProject2.o: In function `cv::String::~String()':
1>C:\OpenCV-3.2.0\opencv\build\include\opencv2\core\cvstd.hpp(664): error : undefined reference to `cv::String::deallocate()'
1> VisualGDB/Debug/LinuxProject2.o: In function `cv::Mat::Mat(int, int, int, cv::Scalar_<double> const&)':
1>C:\OpenCV-3.2.0\opencv\build\include\opencv2\core\mat.inl.hpp(352): error : undefined reference to `cv::Mat::operator=(cv::Scalar_<double> const&)'
1> VisualGDB/Debug/LinuxProject2.o: In function `cv::Mat::~Mat()':
1>C:\OpenCV-3.2.0\opencv\build\include\opencv2\core\mat.inl.hpp(592): error : undefined reference to `cv::fastFree(void*)'
1> VisualGDB/Debug/LinuxProject2.o: In function `cv::Mat::create(int, int, int)':
1>C:\OpenCV-3.2.0\opencv\build\include\opencv2\core\mat.inl.hpp(684): error : undefined reference to `cv::Mat::create(int, int const*, int)'
1> VisualGDB/Debug/LinuxProject2.o: In function `cv::Mat::release()':
1>C:\OpenCV-3.2.0\opencv\build\include\opencv2\core\mat.inl.hpp(704): error : undefined reference to `cv::Mat::deallocate()'
1> VisualGDB/Debug/LinuxProject2.o: In function `main':
1>D:\Softwareentwicklung\Projects\LinuxProject2\LinuxProject2.cpp(18): error : undefined reference to `cv::namedWindow(cv::String const&, int)'
1>D:\Softwareentwicklung\Projects\LinuxProject2\LinuxProject2.cpp(19): error : undefined reference to `cv::imshow(cv::String const&, cv::_InputArray const&)'
1>D:\Softwareentwicklung\Projects\LinuxProject2\LinuxProject2.cpp(21): error : undefined reference to `cv::waitKey(int)'
1>D:\Softwareentwicklung\Projects\LinuxProject2\LinuxProject2.cpp(23): error : undefined reference to `cv::destroyWindow(cv::String const&)'
1>collect2.exe : error : ld returned 1 exit status
Может быть, у кого-то были такие же проблемы — я действительно много искал, но не смог найти похожие проблемы.
Вы только сказали инструментальную цепочку где искать при поиске библиотек («Библиотечный каталог»). Вы не сказали это который библиотеки, на которые можно ссылаться … Так что неспособность найти символы из этих отсутствующих библиотек совершенно неудивительна.
Таким образом, в дополнение к каталогу / папкам поиска библиотек, вам также необходимо заполнить поле «Имена библиотек» именами любых библиотек, на символы которых вы ссылаетесь — в данном случае, по крайней мере, opencv
, Таким образом, компоновщик может ссылаться на эти библиотеки и, следовательно, разрешать эти символы.
Редактировать согласно совершенно другому вопросу
На основе этой темы:
Указание gcc напрямую связать библиотеку статически
Похоже, вы должны переместить любые статические библиотеки во флаги «Дополнительный компоновщик», так как «Библиотечные имена» генерируют -l
переключатели (не -l:
), которые предназначены для динамических библиотек, но вы пытаетесь связать статическую библиотеку.
Других решений пока нет …