QT和Halcon联合编译的时候一直有这个错误

 

 

 

 

 

 

 

 

刚开我以为是代码写错了,后来网上的测试代码也会出现这样的问题,后来想着HALCON20库的问题然后换了19的库同样的问题,QT5其他项目编译是没有问题的,就是用Halcon库会出现问题。

下面是pro文件中添加的配置,Halcon的include和lib已经放在了项目文件夹下面,同时qmake没有问题也没有报错。


INCLUDEPATH += $$PWD/include\
INCLUDEPATH += $$PWD/include/halconcpp

LIBS += -L$$PWD/lib/ -lhalcon
LIBS += -L$$PWD/lib/ -lhalconcpp

INCLUDEPATH += $$PWD/lib/
DEPENDPATH += $$PWD/lib/

 

下面是运行时候的问题

10:25:29: 为项目testQT执行步骤 ...
10:25:29: 配置没有改变, 跳过 qmake 步骤。
10:25:29: 正在启动 "D:\QT\Tools\mingw730_64\bin\mingw32-make.exe" -j12

D:/QT/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Users/63261/Desktop/project/build-testQT-Desktop_Qt_5_14_2_MinGW_64_bit-Debug'
D:\QT\5.14.2\mingw73_64\bin\uic.exe ..\testQT\mainwindow.ui -o ui_mainwindow.h
g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -Wextra -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\testQT -I. -I..\testQT\include -IINCLUDEPATH -I+= -I..\testQT\include\halconcpp -I..\testQT\lib -ID:\QT\5.14.2\mingw73_64\include -ID:\QT\5.14.2\mingw73_64\include\QtWidgets -ID:\QT\5.14.2\mingw73_64\include\QtGui -ID:\QT\5.14.2\mingw73_64\include\QtANGLE -ID:\QT\5.14.2\mingw73_64\include\QtCore -Idebug -I. -I/include -ID:\QT\5.14.2\mingw73_64\mkspecs\win32-g++  -o debug\main.o ..\testQT\main.cpp
g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -Wextra -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\testQT -I. -I..\testQT\include -IINCLUDEPATH -I+= -I..\testQT\include\halconcpp -I..\testQT\lib -ID:\QT\5.14.2\mingw73_64\include -ID:\QT\5.14.2\mingw73_64\include\QtWidgets -ID:\QT\5.14.2\mingw73_64\include\QtGui -ID:\QT\5.14.2\mingw73_64\include\QtANGLE -ID:\QT\5.14.2\mingw73_64\include\QtCore -Idebug -I. -I/include -ID:\QT\5.14.2\mingw73_64\mkspecs\win32-g++  -o debug\mainwindow.o ..\testQT\mainwindow.cpp
g++ -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -Wextra -Wextra -dM -E -o debug\moc_predefs.h D:\QT\5.14.2\mingw73_64\mkspecs\features\data\dummy.cpp
D:\QT\5.14.2\mingw73_64\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN --include C:/Users/63261/Desktop/project/build-testQT-Desktop_Qt_5_14_2_MinGW_64_bit-Debug/debug/moc_predefs.h -ID:/QT/5.14.2/mingw73_64/mkspecs/win32-g++ -IC:/Users/63261/Desktop/project/testQT -IC:/Users/63261/Desktop/project/testQT/include -IC:/Users/63261/Desktop/project/testQT/INCLUDEPATH -I"C:/Users/63261/Desktop/project/testQT/+=" -IC:/Users/63261/Desktop/project/testQT/include/halconcpp -IC:/Users/63261/Desktop/project/testQT/lib -ID:/QT/5.14.2/mingw73_64/include -ID:/QT/5.14.2/mingw73_64/include/QtWidgets -ID:/QT/5.14.2/mingw73_64/include/QtGui -ID:/QT/5.14.2/mingw73_64/include/QtANGLE -ID:/QT/5.14.2/mingw73_64/include/QtCore -I. -ID:/QT/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++ -ID:/QT/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/x86_64-w64-mingw32 -ID:/QT/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/backward -ID:/QT/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include -ID:/QT/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include-fixed -ID:/QT/Tools/mingw730_64/x86_64-w64-mingw32/include ..\testQT\mainwindow.h -o debug\moc_mainwindow.cpp
g++ -c -fno-keep-inline-dllexport -g -std=gnu++11 -Wall -Wextra -Wextra -fexceptions -mthreads -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\testQT -I. -I..\testQT\include -IINCLUDEPATH -I+= -I..\testQT\include\halconcpp -I..\testQT\lib -ID:\QT\5.14.2\mingw73_64\include -ID:\QT\5.14.2\mingw73_64\include\QtWidgets -ID:\QT\5.14.2\mingw73_64\include\QtGui -ID:\QT\5.14.2\mingw73_64\include\QtANGLE -ID:\QT\5.14.2\mingw73_64\include\QtCore -Idebug -I. -I/include -ID:\QT\5.14.2\mingw73_64\mkspecs\win32-g++  -o debug\moc_mainwindow.o debug\moc_mainwindow.cpp
In file included from ..\testQT\include/halconcpp/HTupleElement.h:20:0,
                 from ..\testQT\include/halconcpp/HTuple.h:51,
                 from ..\testQT\include\halconcpp/HalconCpp.h:94,
                 from ..\testQT\mainwindow.h:5,
                 from ..\testQT\mainwindow.cpp:3:
..\testQT\include/halconcpp/HString.h: In member function 'const wchar_t* HalconCpp::HString::TextW() const':
..\testQT\include/halconcpp/HString.h:118:18: error: invalid conversion from 'const short unsigned int*' to 'const wchar_t*' [-fpermissive]
     return TextUS();
            ~~~~~~^~
In file included from ..\testQT\include/halconcpp/HTupleElement.h:20:0,
                 from ..\testQT\include/halconcpp/HTuple.h:51,
                 from ..\testQT\include\halconcpp/HalconCpp.h:94,
                 from ..\testQT\mainwindow.h:5,
                 from ..\testQT\main.cpp:1:
..\testQT\include/halconcpp/HString.h: In member function 'const wchar_t* HalconCpp::HString::TextW() const':
..\testQT\include/halconcpp/HString.h:118:18: error: invalid conversion from 'const short unsigned int*' to 'const wchar_t*' [-fpermissive]
     return TextUS();
            ~~~~~~^~
In file included from ..\testQT\include/halconcpp/HalconCppIncludes.h:87:0,
                 from ..\testQT\include\halconcpp/HalconCpp.h:106,
                 from ..\testQT\mainwindow.h:5,
                 from ..\testQT\mainwindow.cpp:3:
..\testQT\include/halconcpp/HSerializedItem.h: At global scope:
..\testQT\include/halconcpp/HSerializedItem.h:26:14: error: function 'HalconCpp::HSerializedItem::HSerializedItem()' definition is marked dllimport
   LIntExport HSerializedItem():HHandle() {}
              ^~~~~~~~~~~~~~~
..\testQT\include/halconcpp/HSerializedItem.h:29:14: error: function 'HalconCpp::HSerializedItem::HSerializedItem(const HalconCpp::HSerializedItem&)' definition is marked dllimport
   LIntExport HSerializedItem(const HSerializedItem& source) : HHandle(source) {}
              ^~~~~~~~~~~~~~~
In file included from ..\testQT\include/halconcpp/HalconCppIncludes.h:87:0,
                 from ..\testQT\include\halconcpp/HalconCpp.h:106,
                 from ..\testQT\mainwindow.h:5,
                 from ..\testQT\main.cpp:1:
..\testQT\include/halconcpp/HSerializedItem.h: At global scope:
..\testQT\include/halconcpp/HSerializedItem.h:26:14: error: function 'HalconCpp::HSerializedItem::HSerializedItem()' definition is marked dllimport
   LIntExport HSerializedItem():HHandle() {}
              ^~~~~~~~~~~~~~~
..\testQT\include/halconcpp/HSerializedItem.h:29:14: error: function 'HalconCpp::HSerializedItem::HSerializedItem(const HalconCpp::HSerializedItem&)' definition is marked dllimport
   LIntExport HSerializedItem(const HSerializedItem& source) : HHandle(source) {}
              ^~~~~~~~~~~~~~~
mingw32-make[1]: *** [Makefile.Debug:625: debug/main.o] Error 1
mingw32-make[1]: *** Waiting for unfinished jobs....
mingw32-make[1]: *** [Makefile.Debug:868: debug/mainwindow.o] Error 1
In file included from ..\testQT\include/halconcpp/HTupleElement.h:20:0,
                 from ..\testQT\include/halconcpp/HTuple.h:51,
                 from ..\testQT\include\halconcpp/HalconCpp.h:94,
                 from debug\../../testQT/mainwindow.h:5,
                 from debug\moc_mainwindow.cpp:10:
..\testQT\include/halconcpp/HString.h: In member function 'const wchar_t* HalconCpp::HString::TextW() const':
..\testQT\include/halconcpp/HString.h:118:18: error: invalid conversion from 'const short unsigned int*' to 'const wchar_t*' [-fpermissive]
     return TextUS();
            ~~~~~~^~
In file included from ..\testQT\include/halconcpp/HalconCppIncludes.h:87:0,
                 from ..\testQT\include\halconcpp/HalconCpp.h:106,
                 from debug\../../testQT/mainwindow.h:5,
                 from debug\moc_mainwindow.cpp:10:
..\testQT\include/halconcpp/HSerializedItem.h: At global scope:
..\testQT\include/halconcpp/HSerializedItem.h:26:14: error: function 'HalconCpp::HSerializedItem::HSerializedItem()' definition is marked dllimport
   LIntExport HSerializedItem():HHandle() {}
              ^~~~~~~~~~~~~~~
..\testQT\include/halconcpp/HSerializedItem.h:29:14: error: function 'HalconCpp::HSerializedItem::HSerializedItem(const HalconCpp::HSerializedItem&)' definition is marked dllimport
   LIntExport HSerializedItem(const HSerializedItem& source) : HHandle(source) {}
              ^~~~~~~~~~~~~~~
mingw32-make[1]: *** [Makefile.Debug:871: debug/moc_mainwindow.o] Error 1
mingw32-make[1]: Leaving directory 'C:/Users/63261/Desktop/project/build-testQT-Desktop_Qt_5_14_2_MinGW_64_bit-Debug'
mingw32-make: *** [Makefile:45: debug] Error 2
10:25:36: 进程"D:\QT\Tools\mingw730_64\bin\mingw32-make.exe"退出,退出代码 2 。
Error while building/deploying project testQT (kit: Desktop Qt 5.14.2 MinGW 64-bit)
When executing step "Make"
10:25:36: Elapsed time: 00:07.

楼主已经解决了,如果有人看到了这个提问我就说下,这个Qmake的时候不会报错,但是运行的时候注意选择编译器,注意选择编译器,注意选择编译器!!重要的事情说三遍,因为MinGW编译MSVC生成的库文件会出错,而Halcon所有的.h和lib文件都是用MSVC编译器生成的,包括你用Halcon生成的自己写的C++文件,所以在QT中必须要安装MSVC的编译器!!!也就是图中蓝色的部分。