是否可以在Qt中使用需要公共语言运行库(/ clr)的DLL?

时间:2019-03-19 10:29:06

标签: c++ qt dll clr

首先,我对C ++并不了解,但是一直在努力工作,使用Qt创建一些数据采集和硬件控制系统。这使用了许多不同的外部库(.dll / .lib)。

我现在已经到了需要实现一个新库的地步,但是我遇到了很多麻烦。我获得了一些代码,这些代码可以成功调用Visual Studio 2015 x86中提供的.dll中的函数。我的目标是使此代码在Qt 5.6(MSVC 2015 x86)中工作。

除非在编译过程中添加/ clr和/ Gd标志,否则DLL将无法成功工作。我对Qt在后端的工作方式不太了解,但在线评论表明Qt并不真的喜欢/ clr。尽管如此,当只编译与库相关的代码时,它在Qt中的效果很好,我可以使用loadlibrary()访问dll函数。引入代码的其他部分(例如QCustomPlot)时,我会遇到严重的错误:

Compilation error

Error in qvector.h

除了this之外,我对此几乎一无所知,对于一个简单的解决方案来说,它看起来并不好。

快速浏览我的.pro文件可为您提供一个想法:

QT += widgets core gui printsupport
TEMPLATE = app
TARGET = Example3
DESTDIR = Release
CONFIG += release
DEFINES += _WINDOWS WIN64
QMAKE_CXXFLAGS += -clr -Gd
QMAKE_CXXFLAGS_STL_ON -= -EHsc
QMAKE_CXXFLAGS_EXCEPTIONS_ON -= -EHsc
PRECOMPILED_HEADER = stdafx.h

SOURCES += main.cpp\
        mainwindow.cpp \
        libray.cpp \
        main.cpp \
        stdafx.cpp \
        qcustomplot.cpp

HEADERS  += mainwindow.h \
            library.h \
            stdafx.h \
            qcustomplot.h

FORMS    += mainwindow.ui

stdafx.h文件包含#include <tchar.h>#include <comdef.h>

有人可以解释一下我在这里看到的内容以及是否有解决方法吗?

0 个答案:

没有答案