繁体   English   中英

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

[英]Writing and then Calling a C++ DLL from Excel VBA

我正在使用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中的函数时,消息框中的文本乱七八糟: MessageBoxA cpp调用的结果:d³ô³或其他乱码废话

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM