制作Qt DLL并在Visual Basic中使用它

时间:2015-05-28 05:55:56

标签: c++ vb.net qt dll

我的任务是制作一个 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

0 个答案:

没有答案