有哪位大哥对SDK开发包熟悉的啊,COM的SDK开发包,现在我们N多人在赶一个项目,需要用到NETMEETING SDK,NETMEETING是COM组件,在解决了能使用其它COM组件后,竟然发现用使用NETMEETING不知道该包含哪个头文件,如果没有头文件,所有对象都不能声明,所有参数都不能使用,那还用什么NETMEETING啊,求各位大哥救急,能不能帮找找这个头文件啊,所有家底就140分了,愿意全部奉送啊,只求能解决这个问题,到底怎么才能使用NETMEETING组件啊~

解决方案 »

  1.   

    如果有头文件,那肯定在安装目录下了.不过,用的时候要在VC的Options/Directory中加入进来.但用COM组件一般import类型,自动生成smart pointer,好用得很!
      

  2.   

    在VC的Options/Directory中,将SDK的路径包含到include,lib中,最好是提前,避免出现版本不一致的情况.
      

  3.   

    那不在代码里写#include <....h>行吗?
      

  4.   

    只要有dll就行了,不用头文件也可以,我刚刚做过这方面的东西,下面是我的总结:
    一、首先要用#import把dll导入进来
    #import "C:\WINDOWS\System32\olepro32.dll"   //这个dll是ROI32.dll要用到的,所以要在ROI32.dll前import
    #import "ROI32.dll" exclude("Folder") no_namespace  //Folder与其他对象库冲突要注意的两种错误:
    1、是可能会和其他库冲突,可以用exclude("name1","name2")属性来避免错误,
    2、有的dll可能还需要其他库,你可以查看编译后生成的tlh文件开始部分,里面会有提示,这时要把里面提到的库在我们使用的dll前import 进来。二、使用时可以通过OLE/COM Object Viewer来查找接口或者在编译生成的tlh文件中查找
    也可以使用时打开OLE/COM Object Viewer->Type Libraries->选择对应dll的library,然后双击可以打开ITypeLib Viewer,这里可以看到该lib有很多项,Enums表示定义的枚举常量,Structs表示定义的结构,Interface表示定义的接口,CoClasses表示库中总共含有的class对象,如Activity。每个class对象又含有多个接口,如Activity中含有的接口就有IROActivity。三、下面就是使用Activity对象中的IROActivity接口
    IROActivity* oLog = NULL;

    HRESULT hr = CoCreateInstance( __uuidof(Activity),
    NULL,
    CLSCTX_INPROC_SERVER,
    __uuidof(IROActivity),
    (void**) &oLog
          );
    //下面就可以使用IROActivity接口了
    oLog->Log((_bstr_t)bstrMsg, (long)roActivityInfo, (long)roActivityApplication,
      lMsgID, m_sVoiceAgentName);
      

  5.   

    sdk一般都有例子,看看吧。头文件一般都放在inc或include或lib目录里,只要装了sdk应该能找到,把这些目录在Options/Directory中社一下就可以
      

  6.   

    xiaoyuzi(小鱼子) 的方法上是正解
      

  7.   

    真想哭啊~!
    IROActivity* oLog = NULL;
    要是头文件都没有,一声明这个就出错啦
    我把SDK里的头文件全都试了一遍啦,都没有
      

  8.   

    哎,这点小事情。
    没头文件你就不能生成一个吗?
    import那个动态库,会生成tlh和tlb文件来使用;
    还可以在OLE/View中打开那个Com动态库,另存.h .c .idl文件
      

  9.   

    小鱼子兄弟!十分感谢你在
    http://community.csdn.net/Expert/topic/3272/3272945.xml?temp=.4167292
    的回复,我没有用DLL,但是你给那段代码太珍贵了,__uuidof是和所有书上了例子不同的地方,我现在已经能正常声名NM所有的对象和接口了,但是还有一个地方会出莫名的问题,还想麻烦你一下了,指点我一下这个该怎么办,真是太谢谢你了HRESULT hr = CoCreateInstance( __uuidof(Activity),
    NULL,
    CLSCTX_INPROC_SERVER,
    __uuidof(IROActivity),
    (void**) &oLog
          );hr = CoCreateInstance(CLSID_NmManager, NULL, CLSCTX_INPROC_SERVER, IID_INmManager, (void**)&g_pINmManager);   问题就是,程序的编译连接都没错误,但是所有我用以上方法获得的接口都无法成功,都不能返回成功的句柄,hr的值总是0x800401F0,这个问题会是出在什么地方呢?
      

  10.   

    Error Lookup
    0x800401F0:尚未调用 CoInitialize
      

  11.   

    是在用完CoCreateInstance后还要用一次CoInitialize吗?
      

  12.   

    学习怎么调用COM组件,INCLUDE和LIB都设了,但是用不出来,找不到NETMEETING的头文件,变量什么都没办法声明。
      
        后来仔细研究了别人的程序,发现包含的头文件是一个.h文件和一个_i.c文件,又仔细观察了NETMEETING的一个imsconf2.idl文件,发现几乎所有东西都在里边声明了,然后我就用midl将这个idl文件变成了h和c文件,生成了三个文件。    然后我包含其中的.h和_i.c文件,变量和参数真的都能识别了,但是,新的问题又来了,编译都最后剩了三个错误,连接错误,怎么也解决不了了,求各位大哥指点啊~~!,    这是救命的程序啊,我家底就剩40分了,但是还有个帖子,送人分的,那位大哥坚决不要,我在这里就给大家吧,去http://community.csdn.net/Expert/topic/3267/3267336.xml?temp=.3171808拿分就行    这就是剩下那三个最要命的错误了,求大哥们指点啊~!
        testha.obj : error LNK2005: _CLSID_NmManager already defined in StdAfx.obj    testha.obj : error LNK2005: _IID_INmManager already defined in StdAfx.obj
       
        Debug/testha.exe : fatal error LNK1169: one or more multiply defined symbols found
        Error executing link.exe.    试了包含其它生成的文件了,明显一看就是不对,里边连各种声明都没有
      

  13.   

    你是不是把*_i.c这个文件加到你的工程中了? 如果是,把它删除,只要#include它可以了
      

  14.   

    上边的问题已经解决了,现在的问题上
    小鱼子兄弟!十分感谢你在
    http://community.csdn.net/Expert/topic/3272/3272945.xml?temp=.4167292
    的回复,我没有用DLL,但是你给那段代码太珍贵了,__uuidof是和所有书上了例子不同的地方,我现在已经能正常声名NM所有的对象和接口了,但是还有一个地方会出莫名的问题,还想麻烦你一下了,指点我一下这个该怎么办,真是太谢谢你了HRESULT hr = CoCreateInstance( __uuidof(Activity),
    NULL,
    CLSCTX_INPROC_SERVER,
    __uuidof(IROActivity),
    (void**) &oLog
          );hr = CoCreateInstance(CLSID_NmManager, NULL, CLSCTX_INPROC_SERVER, IID_INmManager, (void**)&g_pINmManager);   问题就是,程序的编译连接都没错误,但是所有我用以上方法获得的接口都无法成功,都不能返回成功的句柄,hr的值总是0x800401F0,这个问题会是出在什么地方呢?
      

  15.   

    CoCreateInstance之前要用CoInitialize(NULL);
    CLSID_NmManager和IID_INmManager一定要对应TLH文件中的相应项