代码之家  ›  专栏  ›  技术社区  ›  CannibalSmith

DirectShow抱怨我正在运行一个混合的调试/零售版本。什么?

  •  0
  • CannibalSmith  · 技术社区  · 16 年前

    C:\程序文件\Microsoft SDKS\Windows\v.\samples\multimedia\directshow\baseclasses\wxdebug.gpp第890行:

    /* If this fires you have a mixed DEBUG/RETAIL build */
    
    ASSERT(!!szObjectName ^ !!wszObjectName);
    

    这是什么意思?我该怎么解决?

    如果重要:我已经编写了一个封装directshow的托管媒体播放器库,并且正在我的wpf应用程序中使用它。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Geraint Davies    16 年前

    这不是unicode问题。注释是正确的:您正在链接到调试库,但模块中未定义调试。

    assert触发的情况有两种:其中两者都不为null,并且当两者都为null时。两个非空值都表示某种unicode混合,但此方法仅在具有参数0之一的ifdef unicode中调用。

    object name参数通常通过name()宏传递给cbaseObject。此宏在发布版本中求值为空,在调试版本中求值为对象名字符串。cbaseobject将在调试生成中调用register函数。

    构造函数正在编译未定义调试的wxdebug.h(因此name()的计算结果为空)。但是您正在链接到一个基类库,该库是用debug定义的。

    G

        2
  •  0
  •   OregonGhost    16 年前

    代码看起来像是在测试混合的单/宽字符构建,因为sz是一个以零结尾的字符串,wsz是一个以零结尾的宽字符字符串,代码基本上测试它们中是否有一个具有非零值。也许评论有误?

    试着找出您的构建是否定义了部分Unicode(或者是使用宽字符支持构建的,或者是其他什么),而不是部分Unicode。