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

发布于 2024-08-23 11:34:29 字数 330 浏览 8 评论 0原文

C:\Program Files\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 应用程序中使用它。

C:\Program Files\Microsoft SDKs\Windows\v#.#\Samples\multimedia\directshow\baseclasses\wxdebug.gpp line 890:

/* If this fires you have a mixed DEBUG/RETAIL build */

ASSERT(!!szObjectName ^ !!wszObjectName);

What does it mean and how can I fix it?

If it matters: I've written a managed media player library that wraps DirectShow, and I'm using it in my WPF application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

百变从容 2024-08-30 11:34:30

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

有两种情况会触发断言:两者都非空,以及两者都为空。两个非 null 都表示存在某种 unicode 混合,但此方法只能从参数之一为 0 的 #ifdef UNICODE 中调用。

对象名称参数通常使用 NAME() 宏传递给 CBaseObject。该宏在发布版本中计算为 NULL,在调试版本中计算为对象名称字符串。 CBaseObject 将在调试版本中调用注册函数。

您的构造函数正在编译 wxdebug.h,但未定义 DEBUG(因此 NAME() 的计算结果为 NULL)。但是您正在链接到一个使用定义的 DEBUG 构建的基类库。

G

This is not a unicode issue. The comment is correct: you are linking to a debug library, but you don't have DEBUG defined in your module.

There are two cases where the assert fires: where both are non-null, and and when both are null. Both non-null would indicate some unicode mixup, but this method is only ever called from within an #ifdef UNICODE with one of the params 0.

The object name parameter is normally passed to CBaseObject with the NAME() macro. This macro evalutes to NULL in release builds, and to the object name string in debug builds. CBaseObject will call the register function in debug builds.

Your constructor is compiling wxdebug.h with DEBUG not defined (so NAME() evaluates to NULL). But you are linking to a base class library which was built with DEBUG defined.

G

乱了心跳 2024-08-30 11:34:30

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

尝试查明您的构建是否部分定义了 UNICODE(或使用宽字符支持等构建),部分没有。

The code looks like testing for mixed single/wide character build, since sz is a zero terminated string and wsz is a wide character zero terminated string, and the code basically tests if exactly one of them has a nonzero value. Maybe the comment is mixed up?

Try to find out if your build has partially UNICODE defined (or is built with wide character support, or something), and partially not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文