【问题标题】:A c++ dll to manipulate string to use in vba用于操作字符串以在 vba 中使用的 c++ dll
【发布时间】:2012-07-12 01:02:05
【问题描述】:

我是 C++ 的新手,想用 C++ 创建一个 dll,可以从 excel vba 访问,在 dll 中我有一个函数,它将字符串作为参数并修改字符串,最后修改后的字符串将是在vba中使用。

步骤再一次:

1.一个带有字符串指针作为参数的函数的dll。

2.vba 将空字符串传递给函数。

3.dll会修改或操作字符串。

4.最后修改后的字符串将在vba中使用。

dll里面的函数有点像:

extern "C"_declspec(dllexport) void WINAPI ModifyStr(char* str) { Str =“你好” } 编译器抛出以下错误“不推荐使用从字符串常量到 char* 的转换”

我通过写修改了函数

_declspec(dllexport) void WINAPI ModifyStr(string** Str) { *Str = 新字符串(“你好”); } 这段代码编译得很好,但是当我尝试从 vba 调用该函数时,它导致程序崩溃。请帮助我摆脱这个问题并构建我的 dll 没有任何错误。

【问题讨论】:

    标签: c++ vba dll


    【解决方案1】:

    来自MSDN

    VBA 字符串在传递 ByVal 时作为指向字节字符串 BSTR 结构的指针传递,在传递 ByRef 时作为指向指针的指针传递

    在您的 dll 中,您应该使用 BSTR str = SysAllocString(L"Hello World!"); 来分配字符串。 COM 内存管理应该处理释放。

    【讨论】:

    • @user14297 传递给你的函数的字符串类型不是char* 也不是string** 而是BSTR
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 2021-09-06
    • 2017-02-23
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多