VB6 dll始终是COM。我将用尽可能少的语言来描述一个例子。假设在ActiveX中有一个VB6 DLL项目,其中有一个名为CTest的类,该类包含如下所示的方法
公共函数vbConcat(ByVal a作为字符串,ByVal b作为字符串)作为字符串vbConcat =a&b结束函数
并且在VBTestLib项目属性中将项目名称设置为VB6,并将项目编译为F:\proj\VB6\ActiveXDLL\VBTestDLL.dll。
您需要使用Windows命令regsvr32 F:\proj\VB6\ActiveXDLL\VBTestDLL.dll注册dll
现在您的C++代码:
#使用命名空间F:\proj\VB6\ActiveXDLL\VBTestDLL.dll导入“VBTestLib”;
::OnButton1 1(){
代码语言:javascript运行复制 HRESULT hresult;
CLSID clsid;
_CTest *t; // a pointer to the CTest object
_bstr_t bstrA = L"hello";
_bstr_t bstrB = L" world";
_bstr_t bstrR;
::CoInitialize(NULL);
hresult=CLSIDFromProgID(OLESTR("VBTestLib.CTest"), &clsid);
hresult= CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,
__uuidof(_CTest),(LPVOID*) &t);
if(hresult == S_OK)
{
bstrR = t->vbConcat(bstrA , bstrB);
AfxMessageBox((char*)bstrR);
}}
就这样,开始吧。