【发布时间】:2015-05-30 01:18:06
【问题描述】:
首先让我说 VB 不是我的强项。
我正在开发一个用于 VB6 应用程序的 dll 的 C++ dll。
我已经成功地在 VB 中实例化了 (C++) 类。我正在尝试使用以下语法访问该类的数据成员:“vbCppObj.dataMemberName”。
我可以确认这适用于 boolean 和 enum 类型,它会调用我的类中定义的 getter 方法。
我还必须访问 (C++) 类中的字符串。 字符串的getter函数如下:
class MyCPPClass
{
private:
WCHAR* CPPErrorString = L"This is a string";
public:
HRESULT __stdcall get_CPPErrorString(BSTR* pVal)
{
BSTR str = ::SysAllocString(CPPErrorString);
if(str)
*pVal = str;
return S_OK;
}
};
我现在无法调试 C++ dll。
我在VB6代码中访问这个值如下:
ErrorString = vbCppObj.CPPErrorString
Logger.log "[Log]:" & ErrorString
“ErrorString”是VB中的String类型。当这条线执行时,“ErrorString”对象显示“<Out of memory>”(当我将鼠标悬停在它上面时)。如果我更进一步,到日志记录代码,它会给我一个“错误 14:字符串空间不足”。
另外,我已经在浏览器中输入了这段代码,所以它可能不是 100% 正确的。
【问题讨论】:
-
更正:“ErrorString”对象显示“内存不足”(当我将鼠标悬停在它上面时)
-
首先让我说:C++ 不是我的g。但也许你会发现微软支持页面很有用:support.microsoft.com/en-us/kb/205277 和 support.microsoft.com/en-us/kb/106553