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\hdevengineLinker General Additional Library Directories:
C:\Program Files\MVTec\HALCON-11.0\lib\x86sse2-win32Linker Input Additional Dependencies:
hdevenginecpp.lib;halconcpp.libDie Funktionen für Halcon sind im Namespace HalconCpp
Die Funktionem der DevEngine sind im Namespace HDevEngineCppHoffe 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.