Aufruf Prozeduren von Halcon 11 in VC++ 2010



  • Hallo,

    Ich versuche einfach in kleinem Programm eine Prozedur von Halcon in VC++ aufzurufen. aber leider wenn ich das Program ausführe, triff den folgenden Fehler auf:

    1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall HDevEngineCpp::HDevEngine::SetProcedurePath(char const *)" (__imp_?SetProcedurePath@HDevEngine@HDevEngineCpp@@QAEXPBD@Z) referenced in function _main
    1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall HDevEngineCpp::HDevEngine::HDevEngine(void)" (__imp_??0HDevEngine@HDevEngineCpp@@QAE@XZ) referenced in function _main
    1>C:\Users\azeddine\Documents\Visual Studio 2010\Projects\DLLTest0\Debug\DLLTest0.exe : fatal error LNK1120: 2 unresolved externals
    ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
    

    mein Projekt(win32 consol applikation) besteht nur mit einem main.cpp.
    main.cpp

    #include <iostream>
    #include <stdio.h>
    #include "C:\Program Files\MVTec\HALCON-11.0\include\Halcon.h"
    #include "C:\Program Files\MVTec\HALCON-11.0\include\hdevengine\HDevEngineCpp.h"
    
    using namespace std;
    using namespace HDevEngineCpp;
    
    int main()
    {
        HDevEngine hProcName;
        hProcName.SetProcedurePath("C:\Program Files\MVTec\HALCON-11.0\procedures\general\disp_message.hdvp");
    
    return 0;
    }
    

    ich weiss nicht was ich machen soll, ob ich weitere datein im Projekt fügen ...
    Leider ich bin keine Erfahrene Programmierer in C++.

    Danke im Voraus



  • Der Linker beklagt sich über eine fehlende lib.

    Zum Halcon werden vermutlich welche mitgeliefert. Diese muss man unter Projekteinstellungen dem Linker bekanntmachen.



  • Hallo Hexa.AH2000

    C/C++ General Additional Include Directories:
    C:\Program Files\MVTec\HALCON-11.0\include
    C:\Program Files\MVTec\HALCON-11.0\include\halconcpp
    C:\Program Files\MVTec\HALCON-11.0\include\hdevengine

    Linker General Additional Library Directories:
    C:\Program Files\MVTec\HALCON-11.0\lib\x86sse2-win32

    Linker Input Additional Dependencies:
    hdevenginecpp.lib;halconcpp.lib

    Die Funktionen für Halcon sind im Namespace HalconCpp
    Die Funktionem der DevEngine sind im Namespace HDevEngineCpp

    Hoffe das Hilft Dir weiter.

    Herzliche Grüsse
    Walter



  • Habe noch was vergessen:

    wenn Du C/C++ General Additional Include Directories so machst wie ich vorschlage, dann sind die Includes für Halcon und HDevEngine lesbarer 😉

    #include "HalconCpp.h"
    #include "HDevEngineCpp.h"



  • Danke für die Antwort.
    aber nach der Programmausführung(win64) eine andere Fehler aufgetreten: 😕

    Compiling...
    create.cpp
    HalconInterface.cpp
    HalconInterfaceprop.cpp
    Generating Code...
    Linking...
    C:\Program Files\MVTec\HALCON-11.0\lib\x64-win64\halconcpp.lib : fatal error LNK1113: invalid machine type
    Error executing link.exe.
    Creating browse info file...
    
    HalconInterface.dll - 1 error(s), 0 warning(s)
    

    ich habe verstanden dass der Linker nicht in der lage ist, halconcpp.lib zu lesen.

    oder??

    Danke



  • invalid machine type

    Wenn Du die win64 lib linken willst, dann muss Dein Projekt auch ein win64 Projekt sein.

    Edit2: win64 gibt es nicht! Solution Platform für 64 Bit heist x64.

    Trage doch einmal die x86sse2-win32 Lib ein, wenn es dann linkt, dann hast Du die Bestätigung dass Du ein win32 Projekt hast.

    Edit: Du Kannst auch im Property Manager schauen, ich Wette darauf dass dort Win32 steht 😉

    Herzliche Grüsse
    Walter



  • ja Hast du Recht, ich hab x64-win64 statt x86sse2-win32 Lib Dateien inkludiert

    danke es functioniert.
    🙂


Anmelden zum Antworten