gpt4 book ai didi

c++ - 从Excel VBA编写然后调用C++ DLL

转载 作者:行者123 更新时间:2023-12-01 14:50:56 32 4
gpt4 key购买 nike

我正在使用Visual Studio 2010在C++中编写一个32位DLL,打算从Excel VBA中调用它。

C++ cpp文件包含以下内容:

    #include "windows.h"
#include "stdafx.h"

int _stdcall fnGetData (const LPCSTR someText) {
MessageBoxA(0, someText, "wizzle wuzzle", MB_OK | MB_ICONINFORMATION);
return 42;
}

尽管DEF文件具有以下内容:
    LIBRARY getpdata
EXPORTS
GetData=fnGetData

excel VBA是这样的:
    Option Explicit
Private Declare Function GetData Lib "getpdata.dll" (ByRef someText As String) As Integer
Public Sub PassSomeText()
Dim ret As Integer, someText As String
someText = "Hello from my Excel Subroutine."
ret = GetData(someText)
End Sub

代码可以正常编译,并生成DLL。但是,当我从Excel VBA调用DLL中的函数时,消息框中的文本乱七八糟:

我可能会看到指针的文本表示形式?如何获取Excel VBA传递的文本值?

最佳答案

弄清楚了,就像我要发布我的问题一样。答案是在VBA函数声明中将ByRef更改为ByVal:

    Private Declare Function GetData Lib "getpdata.dll" (ByVal someText As String) As Integer

关于c++ - 从Excel VBA编写然后调用C++ DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498179/

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