我的任务是制作一个 Qt dll ,它将在 Visual Basic 中使用。 我发现了几篇关于为VB制作C ++ dll的文章,但看起来,Qt有一些特别的东西,所以无论我尝试做多少,它都行不通。
首先,我找到了一个关于为VB制作C / C ++ dll的article。在文章的最后,它说:
对于由Visual Basic编写的程序调用的DLL,别名 .def文件中需要本主题中显示的技术。
很难理解,如何将.def文件添加到Qt项目中。
我不确定,但看起来DEF_FILE = def.def
是有效的。
在def.def我写了
LIBRARY TestLibrary
EXPORTS
SUM = _sum@#
for function
int __stdcall func sum(int a, int b) { return a + b; }
'#' - 因为我不知道
参数列表中的字节数(所需的堆栈空间)
为此,我们需要使用/ MAP,我没有找到如何在Qt中使用
然后我尝试了this:
int sum(int a, int b) { return a + b; }
LIBRARY TestLibrary
EXPORTS
sum @1
它也不起作用。
[这] [3]也是一只死鸭。
[这] [4]问题对我来说没有任何问题。
我的所有代码:
TestLibrary.pro
QT -= gui
TARGET = TestLibrary
TEMPLATE = lib
VERSION = 1.0.0
DEFINES += TESTLIBRARY_LIBRARY
SOURCES += testlibrary.cpp
HEADERS += testlibrary.h\
testlibrary_global.h
DEF_FILE = def.def
unix {
target.path = /usr/lib
INSTALLS += target
}
DISTFILES += \
def.def
testlibrary.h
#ifndef TESTLIBRARY_H
#define TESTLIBRARY_H
#include "testlibrary_global.h"
#include <stddef.h>
class TESTLIBRARYSHARED_EXPORT TestLibrary
{
public:
int sum(int a, int b) { return a + b; }
};
#endif // TESTLIBRARY_H
testlibrary_global.h
#ifndef TESTLIBRARY_GLOBAL_H
#define TESTLIBRARY_GLOBAL_H
#include <QtCore/qglobal.h>
#if defined(TESTLIBRARY_LIBRARY)
# define TESTLIBRARYSHARED_EXPORT Q_DECL_EXPORT
#else
# define TESTLIBRARYSHARED_EXPORT Q_DECL_IMPORT
#endif
#endif // TESTLIBRARY_GLOBAL_H
testlibrary.cpp
#include "testlibrary.h"
def.def
LIBRARY TestLibrary
EXPORTS
sum @1
对不起我糟糕的英语= P
3:https:// msdn.microsoft .com / zh-gb / library / a90k134d.aspx
4:https:// stackoverflow .com / questions / 19730906 / using-my-c-qt-library-dll-in-visual-basic