hur.cn - 华软网

 热门搜索

debug正确,但是release编译出错,求高手解答

  作者:未知    来源:网络    更新时间:2011/8/11
class CFaewDlg : public CDialog
{
   // Construction
   public:
CFaewDlg(CWnd* pParent = NULL); // standard constructor
HWND m_hWndVideo;
DWORD m_Frame;

COMPVARS m_Com;
BITMAPINFO m_InInfo,m_OutInfo;
PAVIFILE m_pFile;
AVISTREAMINFO strhdr;
PAVISTREAM ps;

BOOL m_Captured;


上面是在对话框中定义的一些变量,在本机上debug编译没有问题,在其他机子上debug编译报错。
      还有就是在本机上,release编译的时候也出问题,而且和在其他机子上编译的问题一样
    问题都是
C:\Users\凝著枫\Desktop\录像\faewDlg.h(21) : error C2146: syntax error : missing ';' before identifier 'm_Com'
C:\Users\凝著枫\Desktop\录像\faewDlg.h(21) : error C2501: 'COMPVARS' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(21) : error C2501: 'm_Com' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(23) : error C2146: syntax error : missing ';' before identifier 'm_pFile'
C:\Users\凝著枫\Desktop\录像\faewDlg.h(23) : error C2501: 'PAVIFILE' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(23) : error C2501: 'm_pFile' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(24) : error C2146: syntax error : missing ';' before identifier 'strhdr'
C:\Users\凝著枫\Desktop\录像\faewDlg.h(24) : error C2501: 'AVISTREAMINFO' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(24) : error C2501: 'strhdr' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(25) : error C2146: syntax error : missing ';' before identifier 'ps'
C:\Users\凝著枫\Desktop\录像\faewDlg.h(25) : error C2501: 'PAVISTREAM' : missing storage-class or type specifiers
C:\Users\凝著枫\Desktop\录像\faewDlg.h(25) : error C2501: 'ps' : missing storage-class or type specifiers



---华软 网友回答---
问题应该是在无法识别COMPVARS m_Com;
 BITMAPINFO m_InInfo,m_OutInfo;
 PAVIFILE m_pFile;
 AVISTREAMINFO strhdr;
 PAVISTREAM ps;
这四个结构体啊
为什么我的机子可以识别,别人的不能识别呢。
而我的debug可以识别,但是release又识别不了

---华软网友回复---
先看下配置,必要的头文件,必要的Preprocessor definition,必要的库是否都已经包含了
---华软网友回复---
引用 2 楼 yuanmoren 的回复:
先看下配置,必要的头文件,必要的Preprocessor definition,必要的库是否都已经包含了


 应该没有问题啊,我在导入库文件的时候都用了#pragma comment命令导入的啊,而且我debug的时候没有问题,程序能正常运行,说明库文件并不缺少啊
---华软网友回复---
应该还是配置的问题,我也碰到过,可以看看库的包含等项目属性的设置
---华软网友回复---
你在项目属性中查看附加目录和附加库是否都正确了,debug和release两个配置对比下(多数是此问题)。另外,看看文件中是否有宏定义在定义release版本时不包含指定头文件。
---华软网友回复---
自己比较debug与release两个路径配置的不同!
---华软网友回复---
可能对DEBUG和RELEASE头文件有预定义
---华软网友回复---
Debug和release包含的dll文件是否不相同。是否写了
#ifdef _DEBUG
....
#endif
引用 3 楼 a554187160 的回复:
引用 2 楼 yuanmoren 的回复:

先看下配置,必要的头文件,必要的Preprocessor definition,必要的库是否都已经包含了


 应该没有问题啊,我在导入库文件的时候都用了#pragma comment命令导入的啊,而且我debug的时候没有问题,程序能正常运行,说明库文件并不缺少啊

---华软网友回复---
你的debug和release路面配置路径不同,导致release没有找到那个变量所在文件夹,其它机子也一样,也许你的机子里面debug配置路径是绝对路径,所在在别的机子上也是找不到的。
---华软网友回复---
引用 9 楼 qiuxin425 的回复:
你的debug和release路面配置路径不同,导致release没有找到那个变量所在文件夹,其它机子也一样,也许你的机子里面debug配置路径是绝对路径,所在在别的机子上也是找不到的。



我觉得你说的挺有道理的,可是我还是无法修改成功啊,您能私下帮我解决下吗?我的QQ554187160,不胜感激
---华软网友回复---
引用 10 楼 a554187160 的回复:
引用 9 楼 qiuxin425 的回复:

你的debug和release路面配置路径不同,导致release没有找到那个变量所在文件夹,其它机子也一样,也许你的机子里面debug配置路径是绝对路径,所在在别的机子上也是找不到的。



我觉得你说的挺有道理的,可是我还是无法修改成功啊,您能私下帮我解决下吗?我的QQ554187160,不胜感激


我这还不能上Q

你看看工程属性--C/C++---常规---附加包含目录那项  debug和release是否一样 
工程属性--链接器--输入--附加依赖项  是否一样  

上面是头文件的路径,下面是库文件的路径
---华软网友回复---
应该还是环境配置的问题
你全工程搜索_DEBUG看看是不是在release下屏蔽了什么
---华软网友回复---
引用 12 楼 xianglitian 的回复:
应该还是环境配置的问题
你全工程搜索_DEBUG看看是不是在release下屏蔽了什么



我发现在debug的情况下预处理程序定义和release情况下的预处理程序定义一个是_DEBUG一个是NDEBUG,
这个区别在什么地方呢 ?
---华软网友回复---
引用 13 楼 a554187160 的回复:
引用 12 楼 xianglitian 的回复:
应该还是环境配置的问题
你全工程搜索_DEBUG看看是不是在release下屏蔽了什么



我发现在debug的情况下预处理程序定义和release情况下的预处理程序定义一个是_DEBUG一个是NDEBUG,
这个区别在什么地方呢 ?

_DEBUG就是是debug
NDEBUG就是不是debug
---华软网友回复---
引用 11 楼 qiuxin425 的回复:
引用 10 楼 a554187160 的回复:
引用 9 楼 qiuxin425 的回复:

你的debug和release路面配置路径不同,导致release没有找到那个变量所在文件夹,其它机子也一样,也许你的机子里面debug配置路径是绝对路径,所在在别的机子上也是找不到的。



我觉得你说的挺有道理的,可是我还是无法修改成功啊,您能私下帮我解决下吗?我的QQ554187160……


首先谢谢你的耐心帮助


我看了下在前面哪项,debug和release在预处理程序定义的地方有一处不同,debug是_DEBUG,而release是NDEBUG,可是我把那项改了也在release也还是报错
  
我仔细看了下,在compiled的时候release并没有错,在build的时候才报错,那就应该是连接的问题把。但是在link下我并没有通过工程添加库文件啊,我使用了两个库文件,都是在代码中使用
#include "vfw.h"
#pragma comment(lib,"vfw32")
#include   "shlwapi.h " 
#pragma comment(lib,"shlwapi")进行添加的啊。

---华软网友回复---
引用 14 楼 xianglitian 的回复:
引用 13 楼 a554187160 的回复:

引用 12 楼 xianglitian 的回复:
应该还是环境配置的问题
你全工程搜索_DEBUG看看是不是在release下屏蔽了什么



我发现在debug的情况下预处理程序定义和release情况下的预处理程序定义一个是_DEBUG一个是NDEBUG,
这个区别在什么地方呢 ?

_DEBUG就是是debug
NDE……


我也是这样猜想的
那问题就不是出在这个地方咯,我在release下compiled的时候并没有错,而是在build的时候报错,那就应该是连接的问题啊,是release没有连接上库文件吗?我添加库文件都是通过
#include "vfw.h"
#pragma comment(lib,"vfw32")
#include   "shlwapi.h " 
#pragma comment(lib,"shlwapi")
添加的,这个可以吗?
---华软网友回复---
包含直接路径试试看。
//例如: #include "c:\windows\xxx.h"

或者把用到的头文件与库文件拷贝到工程的目录里。
---华软网友回复---
引用 4 楼 jiangyuer_xx 的回复:
应该还是配置的问题,我也碰到过,可以看看库的包含等项目属性的设置



能说下具体的解决办法吗?试了很多办法都不行,谢谢你了
---华软网友回复---
引用 17 楼 topsupper 的回复:
包含直接路径试试看。
//例如: #include "c:\windows\xxx.h"

或者把用到的头文件与库文件拷贝到工程的目录里。


我添加了库文件还是不行,而且还有一条报错是
atal error C1083: Cannot open source file: 'F:\VC98\MFC\SRC\APPMODUL.CPP': No such file or directory

这是什么意思呢 
---华软网友回复---
如果你debug没有错误的话 就是你的配置问题 

我觉得compiled没有错,build错误还是库路径的错误,没有找到相应的dll
---华软网友回复---
引用 20 楼 qiuxin425 的回复:
如果你debug没有错误的话 就是你的配置问题 

我觉得compiled没有错,build错误还是库路径的错误,没有找到相应的dll


debug没有问题,但是有条警告,我也不太清楚您帮我看看把 
Build : warning : failed to (or don't know how to) build 'F:\VC98\MFC\SRC\APPMODUL.CPP'
也是在build时出现的

问题是在结构体变量的识别上,基本可以肯定是库文件的连接上出了问题,我连接库是都是使用了
#include "vfw.h"
#pragma comment(lib,"vfw32")
#include "shlwapi.h "  
#pragma comment(lib,"shlwapi")

这个地方可以这样吗?

---华软网友回复---
APPMODUL的cpp文件没有 

如果是封装好的,那么dll文件或者lib文件有吗?
---华软网友回复---
引用 22 楼 qiuxin425 的回复:
APPMODUL的cpp文件没有 

如果是封装好的,那么dll文件或者lib文件有吗?

dll文件和lib文件肯定有吧,debug编译都能通过运行啊
---华软网友回复---
应该是配置问题, 你重新检查一遍你的debug和release属性配置有哪些不同,你引用的dll,debug和release情况下名字是不是一致的
---华软网友回复---
引用 22 楼 qiuxin425 的回复:
APPMODUL的cpp文件没有 

如果是封装好的,那么dll文件或者lib文件有吗?


我的VC是装在E盘的,在'E:\VC98\MFC\SRC\APPMODUL.CPP'下有这个文件,但是为什么编译的时候在F盘找呢 ???
---华软网友回复---
引用 24 楼 fengbingchun 的回复:
应该是配置问题, 你重新检查一遍你的debug和release属性配置有哪些不同,你引用的dll,debug和release情况下名字是不是一致的



我使用的dll都是通过代码在程序中添加的,并没有通过工程选项添加
#include "vfw.h"
#pragma comment(lib,"vfw32")
#include "shlwapi.h "   
#pragma comment(lib,"shlwapi")
这样添加没有问题吧
---华软网友回复---
1、检查工程中C/C++的Preprocessor中的Additional Include directories在Debug和Release配置下是否有不同
2、在option中的Directories中是否包含有vfw.h文件所在的路径
---华软网友回复---
引用 25 楼 a554187160 的回复:
引用 22 楼 qiuxin425 的回复:

APPMODUL的cpp文件没有

如果是封装好的,那么dll文件或者lib文件有吗?


我的VC是装在E盘的,在'E:\VC98\MFC\SRC\APPMODUL.CPP'下有这个文件,但是为什么编译的时候在F盘找呢 ???


你是VC6?
---华软网友回复---
VC6看看

Tools —— Options —— Directories —— Show directories for的包含文件路径是不是对
---华软网友回复---
引用 28 楼 qiuxin425 的回复:
引用 25 楼 a554187160 的回复:
引用 22 楼 qiuxin425 的回复:

APPMODUL的cpp文件没有

如果是封装好的,那么dll文件或者lib文件有吗?


我的VC是装在E盘的,在'E:\VC98\MFC\SRC\APPMODUL.CPP'下有这个文件,但是为什么编译的时候在F盘找呢 ???


你是VC6?



是的啊,怎么了
---华软网友回复---
引用 29 楼 qiuxin425 的回复:
VC6看看

Tools —— Options —— Directories —— Show directories for的包含文件路径是不是对


没错啊,头文件,源文件,和lib文件,都是指向了我的安装盘,文件应该都包含吧,否则debug编译叶不可能通过啊
---华软网友回复---
那你的问题太奇怪了 方便发程序吗?
---华软网友回复---
如果方便你可以把你的代码重要部分删掉,给我发过来 我帮你看看

liqiu7927@sina.com

---华软网友回复---
引用 33 楼 qiuxin425 的回复:
如果方便你可以把你的代码重要部分删掉,给我发过来 我帮你看看

liqiu7927@sina.com


我还要谢谢你的热心呢,没事的。我现在给你发,方便加下QQ吗?我的是554187160
---华软网友回复---
引用 34 楼 a554187160 的回复:
引用 33 楼 qiuxin425 的回复:

如果方便你可以把你的代码重要部分删掉,给我发过来 我帮你看看

liqiu7927@sina.com


我还要谢谢你的热心呢,没事的。我现在给你发,方便加下QQ吗?我的是554187160


我在公司上不了QQ
---华软网友回复---
嗯,没事,那就邮箱吧,谢谢您了。
   我已经发送了

---华软网友回复---
你缺少头文件的引用

在faewDlg.h的开头填上

#include <Vfw.h>

就可以了,我这debug和release都通过了
---华软网友回复---
或者在stdafx.h添加也行
---华软网友回复---
OK了吧 呵呵 
---华软网友回复---
引用 38 楼 qiuxin425 的回复:
或者在stdafx.h添加也行

嗯,按你说的的确解决了,谢谢你的热心了,真的非常感激你      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。