VC调试问题(2)

mjs2000 2002-02-19 06:02:35
strmbasd.lib(wxutil.obj) : error LNK2005: "public: void __thiscall CCritSec::Unlock(void)" (?Unlock@CCritSec@@QAEXXZ) already defined in Play.obj

产生这个错误一般是由什么原因引起的???
...全文
52 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
charles_y 2002-02-20
  • 打赏
  • 举报
回复
搞错了
Kevin_qing 2002-02-20
  • 打赏
  • 举报
回复
vc 6自带的strmbasd.lib和DShow SDK里面的lib相冲突,把DShow sdk 里面的lib拷到vc\lib目录覆盖原来的文件
charles_y 2002-02-20
  • 打赏
  • 举报
回复
play.cpp同时在strmbasd.lib(请查看该lib的工程),以及现在的工程中
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
看来问题描述的不清楚???
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
我分都给了怎么显示不出来啊,大家看看谁没有收到分,我单开帖子给分
csdn改的一点都不好啊,还是原来的清晰
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
我分都给了怎么显示不出来啊,大家看看谁没有收到分,我单开帖子给分
csdn改的一点都不好啊,还是原来的清晰
kingofhell 2002-02-20
  • 打赏
  • 举报
回复
没碰过,暂时没时间看,帮你up 一下
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
to SuperChen(兔子)

高手 高手,我按照你的方法,把wxutil.h改为streams.h(我要用里面的好多h文件),通过了,谢谢

在加点分吧
SuperChen 2002-02-20
  • 打赏
  • 举报
回复
我看了一下 wxutil.h,發現 CCritSec 的方法在沒有 #define DEBUG 的時候是實現在 .h 中的, 所以你先看一下在 play.cpp 中是否必須 include 那個 wxutil.h, 如果必須 include, 你可以嘗試在 include 的部分改成如下的形式:

原來的形式: #include "wxutil.h"

改為:
#ifndef DEBUG
#define DEBUG
#include "wxutil.h"
#undef DEBUG
#else
#include "wxutil.h"
#endif

可以試一下, 我沒試過. :-)
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
加分啊,大家多多发言
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
1); Environmetn config (肯定是这样的,如果不这样就出现问题了,所有的 direct show 都无法编译)
Then you must defined the void __thiscall CCritSec::Unlock(void)"
这个是wxutil.h中定义的,我确信已经包含了

不过我还是要谢谢你的,希望我们多交流,我的QQ2831626
code_cold 2002-02-20
  • 打赏
  • 举报
回复
1); Environmetn config

VC ->Tools ->Options ->Directories ->Include fils -> Directories list 中,the first in the list must be the WXUtil.h's dir

VC ->Tools ->Options ->Directories ->lib fils -> Directories list 中,first must be the strmbasd.lib's dir

Make sure all above,
Then you must defined the void __thiscall CCritSec::Unlock(void)"
in play.cpp or play.cpp's include files

else then
I have no methods
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
//------------------------------------------------------------------------------
// File: WXUtil.h
//
// Desc: DirectShow base classes - defines helper classes and functions for
// building multimedia filters.
//
// Copyright (c) 1992 - 2000, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------


#ifndef __WXUTIL__
#define __WXUTIL__

.....
.....

#endif /* __WXUTIL__ */

这个是wxutil.h本身就是这样的,
code_cold 2002-02-20
  • 打赏
  • 举报
回复
Make sure "我在编译strmbasd.lib的时候确实包含了WXUtil.h "
Then modify the WXUtil.h to:
#ifndef WXUTIL_H_ // Must be at first line
#define WXUTIL_H_

....// It's the original code, No need to modify
#endif // Must be at the last line

若不行,该写Play.cpp
用到WXUtil.h 的地方,全布改名,
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
我在编译strmbasd.lib的时候确实包含了WXUtil.h (应该不会影响产生的库吧,因为我别的direct show应用程序也这样用就没有问题啊)
但是我找不到strmbasd.h啊
code_cold 2002-02-20
  • 打赏
  • 举报
回复

strmbasd.lib的头文件(strmbasd.h)中是否包含了 WXUtil.h ?
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
因为CCritSec声明在WXUtil.h中,所以我只包含了streams.h(中包含WXUtil.h)
play.cpp中包含的头文件是:
#include "stdafx.h" //总的头文件,我没有修改
#include "jxds.h" //应用程序的头文件
#include <streams.h> //directshow的头文件
#include "memcopy.h" //原来memfile的头文件 按照你所说的都增加
#ifndef...
#define...
#endif
格式保证正确
#include "Play.h" //本身的头文件 其中paly.h中没有包含任何头文件

在memcopy.h中包含了
#include "asyncio.h"
#include "asyncrdr.h" //这两个均为memfile例子中的原代码

没有别的声明了啊
code_cold 2002-02-20
  • 打赏
  • 举报
回复
sample.h

#ifndef SAMPLE_H_
#define SAMPLE_H_

void somefunc() {}

#endif


若确认格式正确,
检查Play.cpp 及其头文件(*.h)中是否定义了public: __thiscall CCritSec::CCritSec(void)(咳声明,不可定义)
若有,Kill them
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
大家说说这种情况产生的原因
mjs2000 2002-02-20
  • 打赏
  • 举报
回复
说已经定义,是不是在link 的时候已经编译了,怎么又有wxutil.h(声明了CCritSec),也就是说我声明了两次,但是我找不到我哪里声明了,系统是如何编译的??
加载更多回复(5)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧