解决方案 »

  1.   

    可以,详参见SDK里的示例oaidl.idl#ifndef DO_NO_IMPORTS
    import "objidl.idl";
    #endif
      

  2.   

    谢谢
    我现在想做一个库,要有普通DLL和OCX两个版本,用两个配置分开(DllRelease,OcxRelease)。
    我已经把我能找到的OCX相关的都禁掉了,但是生成的时候还是会出现:
    Project : error PRJ0050: 未能注册输出。请尝试启用“每个用户的重定向”,或者用提升的权限从命令提示窗口中注册该组件。
    这个要怎么去掉的啊?
      

  3.   

    说明你这个COM组件有其他依赖的dll,直接将其拷贝到你com的dll目录下即可
      

  4.   

    STDAPI DllRegisterServer(void)
    {
        HRESULT hr = _AtlModule.DllRegisterServer();
    return hr;
    }
    STDAPI DllUnregisterServer(void)
    {
    HRESULT hr = _AtlModule.DllUnregisterServer();
    return hr;
    }改为试试
    STDAPI DllRegisterServer(void)
    {
            AtlSetPerUserRegistration(true);
            HRESULT hr = _AtlModule.DllRegisterServer();
    return hr;
    }
    STDAPI DllUnregisterServer(void)
    {
            AtlSetPerUserRegistration(true);
    HRESULT hr = _AtlModule.DllUnregisterServer();
    return hr;
    }
      

  5.   

    我只依赖了VC运行时和Dbghelp.dll
      

  6.   

    我是在生成Dll版本(我的DllRelease配置)的库时遇到的这个问题,不是Ocx。
    普通Dll应该不需要任何注册吧,我也在这个配置中把我能找到的所有COM相关的文件加上了->从生成中排除<-属性。
    我想知道我是不是漏了关闭掉一些设置,导致项目生成的时候还想去注册,但是因为其他的文件都排除了,所以没法注册成功。
      

  7.   

     把dbghelp.dll拷贝到你com dll所在目录,然后试试手动regsvr32方式注册看看是否成功,若可行,则调整输出目录,无视ide提示即可,若不可行请用depends查看依赖文件。
      

  8.   

    我是在生成Dll版本(我的DllRelease配置)的库时遇到的这个问题,不是Ocx。
    普通Dll应该不需要任何注册吧,我也在这个配置中把我能找到的所有COM相关的文件加上了->从生成中排除<-属性。
    我想知道我是不是漏了关闭掉一些设置,导致项目生成的时候还想去注册,但是因为其他的文件都排除了,所以没法注册成功。
    工程 选项  链接器 注册输出
      

  9.   

    我是在生成Dll版本(我的DllRelease配置)的库时遇到的这个问题,不是Ocx。
    普通Dll应该不需要任何注册吧,我也在这个配置中把我能找到的所有COM相关的文件加上了->从生成中排除<-属性。
    我想知道我是不是漏了关闭掉一些设置,导致项目生成的时候还想去注册,但是因为其他的文件都排除了,所以没法注册成功。
    工程 选项  链接器 注册输出
    恩,确实是这个!