gpt4 book ai didi

c++ - VBA 中的 Qt5 Dll 出现错误运行时错误 453

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:52 27 4
gpt4 key购买 nike

如何在 Qt 5 中创建 DLL 以在 VBA 中使用它?我有简单的类(class):

dllvba.h

#ifndef DLLVBA_H
#define DLLVBA_H

#include "dllvba_global.h"

class DLLVBASHARED_EXPORT DllVBA
{

public:
DllVBA();
int qsum();
};

#endif // DLLVBA_H

dllvba_global.h

#ifndef DLLVBA_GLOBAL_H
#define DLLVBA_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(DLLVBA_LIBRARY)
# define DLLVBASHARED_EXPORT Q_DECL_EXPORT
#else
# define DLLVBASHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // DLLVBA_GLOBAL_H

dllvba.cpp

#include "dllvba.h"

DllVBA::DllVBA()
{
}

int DllVBA::qsum()
{
return 2;
}

在 VBA 中我使用代码:

Declare Function DllVBA Lib "C:\QTProject\DllVBA\build-DllVBA-Desktop_Qt_5_7_0_MinGW_32bit-Debug\debug\DllVBA.dll" ()  As Object

Sub test()

Dim instance As Object

Set instance = DllVBA()
Debug.Print instance.qsum

End Sub

结果是错误的:

Run-time error '453':

Can't find DLL entry DllVBA in C:\QTProject\DllVBA\build-DllVBA-Desktop_Qt_5_7_0_MinGW_32bit-Deb...

最佳答案

您的 VBA 代码需要一个名为 DllVBA 的函数,它在您的 dll 中不存在(没有声明/实现/导出)。您刚刚导出了一个名为 DllVBA 的 native 类。

当你在 VBA 中写下面的语句时要小心:

Dim instance As Object

这意味着您声明了一个 COM 实例引用,而不是一个 native 类实例引用!VBA 大量依赖 COM 对象。

据我了解,您似乎打算构建一个用 QT5 (C++) 编写的 COM 组件,并通过 VBA 实例化和使用它。你确认吗?

关于c++ - VBA 中的 Qt5 Dll 出现错误运行时错误 453,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41813374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com