一个c ++ dll来操作在vba中使用的字符串

时间:2012-07-12 09:43:36

标签: c++ vba dll

我是c ++的新手,并且要创建一个带有c ++的dll,它将从excel vba访问,在dll中我有一个函数,它将字符串作为参数并修改字符串并且修改字符串atlast将是在vba中使用。

再一步:

1.a 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 = new string(“hello”);                             } 这段代码编译得很好但是当我试图从vba调用该函数时导致程序崩溃。请帮我摆脱这个问题并构建我的dll而没有任何错误。

1 个答案:

答案 0 :(得分:0)

来自MSDN

  

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

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