2017-06-16 2 views
0

Ich begann zu lernen über die Verwendung von Opencv 3 in c. Während ich über die highgui.h Funktionen lernte, habe ich versucht, die Funktion cvCreateButton zu verwenden und ichopencv 3: CVcreatebutton gibt LNK2019 Fehler

bekam folgende Fehlermeldung:

error LNK2019: unresolved external symbol _cvCreateButton referenced in function _main

Ich habe auch:

error LNK1120: 1 unresolved externals

ich verwende Visual Studio 2013 auf einem Windows 10 Laptop Hier ist der Quellcode:

#include <stdio.h> 
#include <opencv2\core\core_c.h> 
#include <opencv2\highgui\highgui_c.h> 
#include <time.h> 

int main(void) 
{ 
    int i,sliderVal = 0; 
    cvNamedWindow("Display window", CV_WINDOW_AUTOSIZE); //create a window 
    //create an image 
    IplImage* image = cvLoadImage("C:/Users/magshimim/Pictures/py.png", 1); 
    cvCreateTrackbar("test", "Display window", &sliderVal, 500, NULL);//trackbar without name 
    CvScalar color = { 0 }; 
    color.val[3] = 255;//alpha value of 255 
    //make the square exactly in the middle of the picture 
    CvPoint p1 = cvPoint(image->width/4, image->height/4);//top left quarter of image 
    CvPoint p2 = cvPoint(p1.x * 3, p1.y * 3);//botton right quarter of image 

    cvCreateButton("button", NULL, "button", CV_PUSH_BUTTON, 0);//that is the line that gives the error 

    srand(time(NULL));//random seed 
    if (!image)//The image is empty. 
    { 
     printf("could not open image\n"); 
    } 
    else 
    { 
     while (1) 
     { 
      for (i = 0; i < 3; i++) 
      { 
       color.val[i] = rand() % 256;//random color for square 
      } 
      //add square on picture, and update the screen 
      cvRectangle(image, p1, p2, color, -1, 0, 0); 
      cvShowImage("Display window", image); 
      cvWaitKey(sliderVal + 1);//slider sets the delay between each color change, delay of 0 is to wait forever so minimum delay is 1 


     } 

     cvWaitKey(0); 


     system("pause"); 
     cvReleaseImage(&image); 

    } 
    return 0; 
} 

In den Projekteigenschaften, habe ich in C/C++ -> Allgemein-> Weitere Fügen Sie Verzeichnisse der Ordner mit den Include-Dateien (opencv\build\include)

Und im Linker, in allgemein-> additonal Bibliotheksverzeichnisse i hinzugefügt C:\opencv\build\x86\vc11\bin and C:\opencv\build\x86\vc12\lib

Und in Eingabe-> zusätzliche Abhängigkeiten habe ich opencv_world300d.lib und opencv_ts300d.lib hinzugefügt.

Ich habe die Anweisungen von meinem c-Lehrer, in einer After-School-Klasse/Aktivität über die Programmierung in c. Die Anweisungen sind in Hebräisch, aber hier ist der Link, wenn jemand

https://drive.google.com/open?id=0Bxa6_LIMELY4RjVvVDJGZkNRZ1k

aussehen will ich heruntergeladen opencv von hier: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.0.0/opencv-3.0.0.exe/download.

Auch wenn ich opencv_highgui300d.lib zu Linker-> Eingabe-> zusätzliche Abhängigkeiten hinzufügen, löst es das Problem nicht. Wie kann ich es lösen? Und was hat den Fehler verursacht? Noam Wiseman

Antwort

0

Sie benötigen opencv/bin/Veröffentlichung opendcv/bin/Debug auf Ihrem Weg addieren - Sie werden die vollständigen Pfad enthalten müssen, mit Anführungszeichen, wenn Sie Leerzeichen im Pfadnamen haben. Eine Alternative besteht darin, die benötigten DLLs in die Freigabe- und Debug-Ordner Ihrer Lösung zu kopieren. Die DLLs haben denselben Basisnamen wie die Bibliotheken, die Sie in Ihre Abhängigkeiten aufgenommen haben.

+0

Vielen Dank für Ihre Antwort. Ich habe vergessen zu sagen, dass ich bereits opencv \ build \ x86 \ vc12 \ bin zum Pfad hinzugefügt habe. Was ist der FILL-Pfad? –

+0

Entschuldigung, es ist ein Tippfehler, den ich FULL meinte. –

+0

Ich habe die DLLs nacheinander in meine Projektordner kopiert. –