小编Mr.*_*Boy的帖子

即使找到接口,CoCreateInstance也会返回E_NOINTERFACE

我有一个COM类在一个应用程序中CMyCOMServer实现IMyInterface,两个都具有正确的GUID.CMyCOMServer::QueryInterface如果请求IUnknown或IMyInterface,则返回S_OK(并将其自身转换为正确的类型),否则返回E_NOINTERFACE.

在同一台PC上的另一个应用程序中,我打电话给:

HRESULT hr = ::CoCreateInstance(__uuidof(CMyCOMServer), 0, CLSCTX_SERVER,
 __uuidof(IMyInterface ),(void **)&pInterface);
Run Code Online (Sandbox Code Playgroud)

它返回E_NOINTERFACE.所以我认为我做错了什么并添加了一个断点CMyCOMServer::QueryInterface.我发现在CoCreateInstance调用时,QueryInterface会针对不同的接口多次触发:

  • 首先,要求IUnknown - 没问题
  • 然后,请求几个接口,如IMarshall等...这些不受支持,因此返回E_NOINTERFACE
  • 最后,请求IMyInterface.我验证QueryInterface返回S_OK并按(IMyInterface *)this预期设置为接口指针

所以我的困惑是为什么调用CoCreateInstance给我留下一个NULL指针并返回E_NOINTERFACE代码,当COM服务器应用程序显然返回我要求的接口?

编辑:我的客户端应用程序在启动时调用CoInitialize(NULL),这没有任何区别.

c++ windows com com-interop visual-c++

8
推荐指数
2
解决办法
1万
查看次数

将VOIP构建到应用程序中(特别是C++)

现有的库和框架是否允许将VOIP构建到定制应用程序中而无需重新发明轮子?客户对C++桌面应用程序的可能性感兴趣,虽然它不是非常有用(它们可以只使用Skype),但它非常.

我相信像DirectX这样的技术可能会内置一些用于游戏内聊天的功能,是吗?还有什么以免费/付费的第三方图书馆的形式?

c++ voip

8
推荐指数
1
解决办法
2万
查看次数

如何从Subversion中删除文件的所有痕迹?

是否可以从SVN中删除包含所有版本历史记录的文件?例如,如果您添加一个包含机密财务信息的文件,只需将其备份,然后在SVN子目录中实现它,您的所有开发人员都可以看到......

svn

8
推荐指数
1
解决办法
480
查看次数

分布式版本控制系统是否会促进不良的备份习

在DVCS中,每个开发人员在他们的工作站上都​​有一个完整的存储库,他们可以为其提交所有更改.然后他们可以将他们的repo与其他人合并,或者克隆它,或者其他任何东西(据我所知,我不是DVCS用户).

对我来说,标志着副作用,更容易忘记备份.在传统的集中式系统中,您作为开发人员和负责人都知道,如果您提交了某些内容,则会将其保存在中央服务器上,该服务器可以提供适当的备份解决方案.

但是使用DVCS时,您似乎只需要在分享时将工作推送到服务器.你在本地拥有repo非常好,所以你可以在你的功能分支上工作一个月而不会打扰任何人,但这意味着(我认为)检查你的代码到repo是不够的,你必须记得做常规推送到备份服务器.

它也意味着,不是吗,团队领导无法看到所有那些不错的SVN提交电子邮件,以便大致了解代码库中发生了什么?

这是否是一个真正的问题?

version-control dvcs

8
推荐指数
1
解决办法
275
查看次数

如何判断是否已创建/初始化MFC对话框?

我在对话框类中有一个OnMove处理程序,它使用控件对象(即CButton)执行一些操作.我发现在调用对话框OnInitDialog方法之前调用此处理程序,因此当我尝试在子控件上调用方法时,我在调试中获得ASSERTS,因为控件尚不存在...它们是在OnInitDialog中创建的.

我希望能够检查两件事:

  1. 如何判断对话框已初始化?
  2. 如何检查单个CWnd控件对象的窗口是否已创建?

在这两种情况下,我都在寻找可以使用的类成员或方法调用结果.

c++ winapi mfc

8
推荐指数
1
解决办法
8246
查看次数

Visual C++ 2010 Express缺少什么?

可能重复:
Visual Studio Express Edition中"缺少"的是什么?

特别针对2010年,特别是针对C++ ......缺少Vs Professional/Premium(烦人的标准版现在名为Professional)?

visual-studio-express visual-studio visual-c++-2010 visual-c++-2010-express

8
推荐指数
1
解决办法
1369
查看次数

Flex 4中的Halo和Spark有什么用?

我使用Flex 2/3已经有几年了,刚刚回到它,升级到Flex 4.我看到一些Halo和Spark主题的参考但我从未在我以前的工作中涉及主题所以我是一个有点困惑正在发生什么.我是否认为Halo是默认主题,还是全新的?

另外,我使用了一个简单的Flex 3 MXML并尝试在Flex4中使用它:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    layout="absolute" borderStyle="none" borderColor="#000000" cornerRadius="0" 
    backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#000000, #FF0000]"
    width="800" height="600"
    frameRate="20">
</mx:Application>
Run Code Online (Sandbox Code Playgroud)

但是我得到错误,比如" 错误:样式'backgroundGradientColors'仅受'mx.core.Application'类型支持,主题为'halo'. "

我尝试了一些东西,但每个都引入了自己的错误.

apache-flex halo flex-spark

8
推荐指数
1
解决办法
6254
查看次数

我必须制作多少个版本的NPAPI浏览器插件?

我知道如果我写一个C++插件,那么我至少需要Linux,Mac,Windows版本,但是完整的组合列表是什么?许多浏览器都支持NPAPI,所以这意味着完全相同的编译NPAPI插件二进制文件/安装程序/ Windows可以在支持NPAPI的所有Windows浏览器中使用吗?或者你是否必须以某种方式为每个浏览器单独"编译"相同的插件代码?

npapi browser-plugin

8
推荐指数
2
解决办法
643
查看次数

Google Body如何加载速度如此之快?

http://bodybrowser.googlelabs.com/

我知道他们的数据来源,即使是实时使用,这些网格和纹理通常是数百Kb甚至几Mb.即使是低分辨率,也很难看出他们如何能够在加载的1s内工作...我看到一些纹理流的证据如果我立即切换到不同的层但是为了得到及时下载的多边形令人印象深刻.

他们是如何实现这一目标的 - 超低聚数还是非常聪明的渐进式加载?

3d webgl google-body-browser

8
推荐指数
2
解决办法
941
查看次数

在实践中使用非公共C++继承的频率是多少?

可能重复:
我什么时候应该使用C++私有继承?

我想制作这个社区维基但没有看到按钮......有人可以添加它吗?

我无法想到我是以非公开的方式从一个类派生出来的,而且我无法回想起看到这样做的代码.

我想听一下它有用的真实世界的例子和模式.

c++ inheritance

7
推荐指数
1
解决办法
1296
查看次数