制作ATL COM组件时,引用ADO 2.6的问题

sproll 2003-10-15 05:41:23
请问大虾,小弟想制作一个ATL COM组件,其中包含一个ClassSample类,在该类中有一个接口DBConnect方法,现要求DBConnect方法在VB的object browser显示的声明如下:

Function DBConnect(DataInitString As String, [lErrNo As Long], [strErrDes As String]) As Connection

于是小弟建了一个ATL项目,并在stdafx.h中添加了:

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")

然后又添加了一个ATL对象ClassSample,在该对象中添加DBConnect方法:

[id(1), helpstring("方法SampleMethod")] HRESULT SampleMethod( [in] BSTR DataInitString, [in, out, optional] long* lErrNo, [in, out, optional] BSTR* strErrDes, [out, retval] _Connection ** );

但编译的时候总是说_Connection类型未声明:

unresolved type declaration : _Connection [ Parameter of Procedure 'DBConnect' ( Interface 'IClassSample' ) ]

哪位大哥能给个解决方法?
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sproll 2003-10-16
  • 打赏
  • 举报
回复
血血楼上的大虾,偶去试试。
flyingjust 2003-10-16
  • 打赏
  • 举报
回复
在 library XXXLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

importlib("C:\Program Files\Common Files\System\ADO\msado15.dll");
sproll 2003-10-16
  • 打赏
  • 举报
回复
我已经搞定了,哈哈哈,跪谢各位大虾!
哈哈哈哈,害得我研究了两天……
sproll 2003-10-16
  • 打赏
  • 举报
回复
现在我把Importlib加在IDL文件中了,还是提示同样错误。哪位大哥帮帮忙?


// ATLS.idl : IDL source for ATLS.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (ATLS.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";


[
object,
uuid(630D9AA2-A5A3-4C7A-A971-1D0C8AC55DD0),
dual,
helpstring("ISampleClass Interface"),
pointer_default(unique)
]
interface ISampleClass : IDispatch
{
[id(1), helpstring("method MethodSample")] HRESULT MethodSample(
[in] BSTR strConnectionString,
[in, out, optional] long* lngErrNo,
[in, out, optional] BSTR* strErrDes,
[out, retval] _Connection** );
};

[
uuid(D6A66847-30A3-4008-8459-F011134497C6),
version(1.0),
helpstring("ATLS 1.0 Type Library")
]
library ATLSLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
importlib("c:\Program Files\Common Files\System\ADO\msado15.dll");
//在这儿加了上,可是还是不行
[
uuid(BA3FB017-A780-4F3F-A841-77E36587F4A7),
helpstring("SampleClass Class")
]
coclass SampleClass
{
[default] interface ISampleClass;
};
};
xiaohyy 2003-10-15
  • 打赏
  • 举报
回复
_ConnectionPtr
天限天空 2003-10-15
  • 打赏
  • 举报
回复
在 library XXXLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
下引入
import "xxx.dll"
ba把 接口定义也放在这后面
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧