首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • com编程出现问题。。。客户端调用CreateInstance时出错 。。。。请帮忙 解决给200分 不够再加 [无满意答案结帖,结帖人:qingfeideyi]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-06 19:01:10 楼主
    代理、残根dll我已经生成可是还是出错 大家帮我解决 可以加我qq 教我 定给重分
    给出客户端代码:
    #include "stdio.h"
    #include "corpse_cm1.h"
    #include "corpseclass1.h"
    #include "cfactory.h"
    int main()
    {
    int i;
    HRESULT hr;
    CoInitialize(NULL);
    IClassFactory* pICF = NULL;
    corpse_cmp1* pTimeBeijing=NULL;
    hr = CoGetClassObject(CLSID_corpseclass1, CLSCTX_LOCAL_SERVER, NULL,IID_IClassFactory,(void**)&pICF);
    hr = pICF->CreateInstance(NULL,IID_corpse_cmp1,(void**)&pTimeBeijing);
    pTimeBeijing->FxStringOut(&i);
    printf("%d",i);
    return 0;
    }

    大家看看 谢谢了
    加我qq:33760618  指教    解决定给重分
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangyt
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 19:11:241楼 得分:0
    出什么样的错啊?把错误信息贴出来啊!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 19:31:572楼 得分:0
    到了hr = pICF->CreateInstance(NULL,IID_corpse_cmp1,(void**)&pTimeBeijing);
    这步就出错 pTimeBeijing获得的指针为NULL
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      8

    发表于:2008-11-06 20:08:173楼 得分:0
    看看返回值hr是什么错误信息。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-06 20:19:264楼 得分:0
    看了 是内存分配访问无效
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jameshooo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      5

    发表于:2008-11-06 23:53:215楼 得分:0
    把CLSCTX_LOCAL_SERVER换成CLSCTX_SERVER试试。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 08:18:406楼 得分:0
    还是不行 还是内存分配访问无效
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jameshooo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      5

    发表于:2008-11-07 09:00:517楼 得分:0
    为什么要先取类厂?直接使用CoCreateInstance不行吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:24:458楼 得分:0
    也不行哦。。。。。。。。。。。楼上的大哥 能帮我看下代码么 。。。。解决了给你分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hurryboylqs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:33:589楼 得分:0
    看你的组件是否写的有问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:39:5910楼 得分:0
    能发现问题。。。就不麻烦大家乐
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 09:41:3111楼 得分:0
    哪位大哥能加我qq 帮我看下 我的qq是 33760618 谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lygfqy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:10:4212楼 得分:0
    dll注册了吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:30:2913楼 得分:0
    注册了

    。。。。。。。。无语啊

    哪位大哥留下 email?

    或者加我qq看下 小弟在拜
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ouyh12345
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-11-07 10:37:3614楼 得分:0
    引用 9 楼 hurryboylqs 的回复:
    看你的组件是否写的有问题


    以com工程为主工程,然后调试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-07 10:40:4315楼 得分:0
    这个如何调试 我这两个工程是分开的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 02:02:3516楼 得分:0
    我跟踪了一下程序 发现在pICF->CreateInstance地方pTimeBeijing的值为空

    hr错误值是:“内存分配访问无效”

    各位请帮忙解决 我失眠好几天了

    另加分。。。可以不?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 02:04:1217楼 得分:0
    内存分配访问无效//。。。。。。

    我是看com技术内幕写的 但是 我用里面的源代码去编译都ok
    都没有问
    可是自己写就问题
    show一下自己的idl文件
    import "unknwn.idl" ;
    // Interface corpse_ix
    [
    object,
    uuid(A3A9B659-D01F-4e37-9C56-9AB81A990534),
    helpstring("corpse_ix Interface"),
    pointer_default(unique)
    ]
    interface corpse_ix : IUnknown
    {
    HRESULT FxStringOut([out] int* szOut) ;
    } ;
    [
    uuid(70539159-FD96-407c-8FBE-CBD143D23E03),
    version(1.0),
    helpstring("Component1.0 Type Library")
    ]
    library corpseLib
    {
    importlib("stdole32.tlb") ;
    [
    uuid(4AC41694-8548-4e9c-8621-8BE340DC5104),
    helpstring("Component 1 Class")
    ]
    coclass cmp1
    {
    [default] interface corpse_ix ;
    };
    } ;

      不知道是不是代理dll有问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • paerxiushi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 16:25:0318楼 得分:0
    corpse_cmp1* pTimeBeijing=NULL;
    你确信corpse_cmp1是一个接口吗,不过看调用
    hr = pICF->CreateInstance(NULL,IID_corpse_cmp1,(void**)&pTimeBeijing);
    的情况,第三个参数好像是一个类的实例,
    你的IDL也没有关于corpse_cmp1定义
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mackz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      6

      8

    发表于:2008-11-08 16:46:1919楼 得分:0
    因为你用的是类厂的CreateInstance函数来创建,那么就应该调试看该函数中有什么问题,定位到错误语句。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 16:57:5320楼 得分:0
    都没有错误
    都能返回
    可是返回后的pix=null
    然后我抓错误 结果是内存分配访问无效
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 19:29:3621楼 得分:0
    真的没有人知道么?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jameshooo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      5

    发表于:2008-11-09 22:21:5422楼 得分:0
    在接口interface corpse_ix的属性中加入oleautomation试试,然后把FxStringOut方法的参数从int* 改成long*
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-09 23:25:1523楼 得分:0
    还是一样 谁能帮我看下代码呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liyinlei
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 08:28:3324楼 得分:0
    从你idl来看,并没有corpse_cmp1 接口,  只有corpse_ix接口。
    应该是
    corpse_ix* pTimeBeijing=NULL;
    hr = CoGetClassObject(CLSID_corpseclass1, CLSCTX_LOCAL_SERVER, NULL,IID_IClassFactory,(void**)&pICF);
    hr = pICF->CreateInstance(NULL,IID_corpse_ix,(void**)&pTimeBeijing);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 08:38:5225楼 得分:0
    哦 后来接口改了下名字 。。

    不过无论怎么改都是不行 。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hustzcj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 08:56:1626楼 得分:0
    路过 关注。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-10 11:15:5127楼 得分:0
    是进程外的调用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qingfeideyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-11 17:23:1228楼 得分:0
    呃  10多天 竟然没人解决 。。。。。。csdn。。。。。。。。
    修改 删除 举报 引用 回复