0

我是 c++ 的新手,想用 c++ 创建一个 dll,该 dll 将从 excel vba 访问,在 dll 内部我有一个函数,它将字符串作为参数并修改字符串,最后修改后的字符串将用于vba。

再次执行以下步骤:

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

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

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

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

dll里面的函数有点像:

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

我通过编写修改了函数

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

4

1 回答 1

0

From MSDN

A VBA String is passed as a pointer to a byte-string BSTR structure when passed ByVal, and as a pointer to a pointer when passed ByRef

In your dll you should use BSTR str = SysAllocString(L"Hello World!"); to allocate the string. COM memory mangement should handle deallocation.

于 2012-07-12T10:07:34.390 回答