这是什么变态的错误啊?我咬牙切齿了!(好像跟头文件包含顺序有关系)
下面摘自我的工程文件
按照这个顺序:
#include "Share.h"
#include "Login.h"
#include "Main.h"
#include <vcl.h>
#pragma hdrstop
......
编译出错:
[C++ Error] Contnrs.hpp(23): E2450 Undefined structure 'DELPHICLASS'
[C++ Error] Contnrs.hpp(23): E2450 Undefined structure 'DELPHICLASS'
[C++ Error] Contnrs.hpp(23): E2449 Size of 'TObjectList' is unknown or zero
[C++ Error] Contnrs.hpp(24): E2238 Multiple declaration for 'TObjectList'
......(还有一长串)
改变头文件包含顺序:
#include <vcl.h>
#include "Share.h"
#include "Login.h"
#include "Main.h"
......
则出错:
[C++ Error] SysConst.hpp(22): E2316 'ResourceString' is not a member of 'System'
......
到底什么原因?我被困了好长时间了,帮帮忙!
问题点数:100、回复次数:9Top
1 楼mme(dog)回复于 2003-09-01 23:49:32 得分 20
提供一个意见
你把那些头文件一个一个地加上去,每加一个就编译一次,这样就容易看出哪个出了毛病了.
还有就是你自己的头文件有没有用了
#ifndef XXXH
#define XXXH
.....
#endif
这样的结构来避免重复包含...Top
2 楼ThinkX(秋天的树)回复于 2003-09-02 00:05:46 得分 15
不要把自定义的头文件放到
#pragma hdrstop
和
#include <vcl.h>
的前面Top
3 楼bigwhiteshark(变性鲨鱼)回复于 2003-09-02 02:20:29 得分 15
实际上它已经给出了线索啦!!
你只要到 Contnrs.hpp(23) 看 'TObjectList' 它的解释是 unknown or zero
然后对照自己写的代码看看
我给的是方法呀Top
4 楼fathappy(我是猫)回复于 2003-09-02 08:13:14 得分 15
偶也认为,关键是E2449 Size of 'TObjectList' is unknown or zero。Top
5 楼yyt(菜鸟)回复于 2003-09-02 09:14:20 得分 15
可能是程序中用到关于TObjectList的地方有错误Top
6 楼supwjhuLoveCjj(常来看看)回复于 2003-09-02 09:37:52 得分 20
把TObjectList减去,再加进来看一下。Top
7 楼Veeve()回复于 2003-09-02 09:40:31 得分 0
我已经基本否认是代码的原因了,因为我把工程所有的单元文件都从工程Remove掉,仅留下
#include <vcl.h>
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
return 0;
}
错误依然。
然后我试验后有下面的现象,
新建一个工程,编译,OK
->用原来的工程文件名称保存,编译,OK
->将所有的单元Add to project,编译,OK
->按照原来工程文件的内容添加
#include "Share.h"
#include "Login.h"
#include "Main.h"
添加WinMain函数里的代码,编译,OK
保存上面所做的工作,下面的任何一步都会带来见鬼的错误,
->把原来工程文件里的内容复制粘贴到新工程文件里,编译出错,不保存关闭工程(甚至退出BCB),再次打开工程,错误依然。(SHIT,难道我拷贝的哪些纯文本里还有什么暗疮不成?)
->参照我原先的设定,我把Project/Options/Packages/Build with runtime packages去掉,编译,又是哪些错,不保存关闭工程甚至退出,再次打开后就再也编译不过去了。
->还有我是先把老的工程文件拷贝粘贴到新工程文件里,把除了#include <vcl.h> ...WinMain(){} 之外的所有代码都注释掉,编译是好的,然而我去掉任何一个注释编译就再也通不过了。
反正是很奇怪很奇怪的,我感觉可能是BCB本身的缺陷,哦对了,我用的是BCB6.0 。顺便问一下,谁知道BCB6.0补丁包哪里有下载?我想试试
Top
8 楼supwjhuLoveCjj(常来看看)回复于 2003-09-02 09:49:16 得分 0
是不是你有的该包含在头文件中的而你在.cpp文件中来#include的。Top
9 楼supwjhuLoveCjj(常来看看)回复于 2003-09-02 09:51:29 得分 0
是不是你把该包含在 .h文件的在 .cpp中 #include的Top
10 楼Veeve()回复于 2003-09-12 17:26:43 得分 0
没有答案,最后重建工程解决的Top
11 楼TR@SOE()回复于 2003-09-12 17:30:53 得分 0
一定记得要先include系统的头文件。Top




