首先,我对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)时,我会遇到严重的错误:
除了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>
。
有人可以解释一下我在这里看到的内容以及是否有解决方法吗?