有没人用过Visual Studio .NET 2003,进来一下

PP_Sky 2003-07-24 09:48:58
我把我用atl写的com拿到 vs.net 2003下编译时出现以下错误:
C1001: 内部编译器错误
(编译器文件“msc1.cpp”的第 2701 行)
。请选择 Visual C++
“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件获得详细信息
但错误都定位到系统的头文件里,
这个项目的文件肯定没有问题,在vc 6.0和vc.net 2002里都通过了,请问有没有人知道怎么解决??~~

...全文
88 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
arxing 2003-08-03
  • 打赏
  • 举报
回复
我说过肯定是预编译的问题嘛。
出错的原因很多,往往是不小心没有注意到某些小节而造成。许多头文件是相关的,它们的次序不能颠倒,把某些头文件放在预编译头文件里面是强制它在相对最前面的位置,你不放也可以解决这个问题。另外,有时候还得注意编译开关,名字空间,以及class, function相互引用的问题,它们也决定了头文件的次序。
总之,你把每个obj单独看待,细心一点就很容易发现问题的所在了。
PP_Sky 2003-08-03
  • 打赏
  • 举报
回复
不用了,有人帮我搞掂了,把 atlcoll.h放到stdafx.h里预编译就行了;不过还是不明白为什么............. :(
PP_Sky 2003-08-02
  • 打赏
  • 举报
回复
to arxing(阿行):
你还是先学一下用VS再说吧,编译时cl内部错误,又何来跟踪调试???

to lygfqy(风清扬):
我也认为是编译选项的问题,不过我以经找他改成和2002一样还不行::

我试了一下,在用了atl的项目里,如果像以下这样的代码就不能通过:
template <typename T>
class Cobj
{
public:
T AA(void);
};
template<typename T>
inline T Cobj::AA()
{
.........................//用到了ATL Collection里面的东西,不用有时能通过
}
改成以下时又能通过:
template <typename T>
class Cobj
{
public:
inline T AA()
{
.........................//用到了ATL Collection里面的东西,不用有时能通过
};
};
arxing 2003-08-02
  • 打赏
  • 举报
回复
这样吧,你自己给我搞一个项目,编译不过的,发到我的信箱chenjx@dhyit.com。不要大,把不必要的东西删去,只要把错误搞出来就行了。
PP_Sky 2003-08-02
  • 打赏
  • 举报
回复
不好意思,贴不了个<T>

不过就算少了个<T> 也不是编译器内部错误吧??!!

to arxing(阿行):
我想你应该知道编译器内部错误和语法错误的区别吧
arxing 2003-08-02
  • 打赏
  • 举报
回复
不要怪编译器了,我试了,都用得好好的。
从这一小段代码看出你的程序一定存在不少问题,只是vs 2002侥幸给你过了。你还是脚踏实地,慢慢来吧。
arxing 2003-08-02
  • 打赏
  • 举报
回复
跟踪调试是对 herosword(南) 说的。
template <typename T>
class Cobj
{
public:
T AA(void);
};
template<typename T>
inline T Cobj::AA()
{
.........................//用到了ATL Collection里面的东西,不用有时能通过
}
本来就错误,正确的语法是:
template<typename T>
inline T Cobj<T>::AA()
{
.........................//用到了ATL Collection里面的东西,不用有时能通过
}
我一直用得挺好。
lygfqy 2003-08-01
  • 打赏
  • 举报
回复
会不会是因为编译选项的关系呢?多找找,应该可以通过的
arxing 2003-08-01
  • 打赏
  • 举报
回复
装好了,试了一下,蛮好,我觉得楼主的问题还是在自身。
PP_Sky 2003-08-01
  • 打赏
  • 举报
回复
to arxing(阿行):
安装2003并不需要2002的盘。

VS上的bug也不是一个两个的事, 只不过编译器上出bug比较少而以
arxing 2003-08-01
  • 打赏
  • 举报
回复
那是你的程序隐藏着缺陷,只是在2002没有表现出来而已。
你碰到问题就应该先采用跟踪调试的方式,没确定之前就不要怪编译器。
herosword 2003-08-01
  • 打赏
  • 举报
回复
我用vs2002编译的com在vs2003中也可以编译和使用,但是用vs2003编译的com用ole/view查看却总是地址冲突报错,但查看2002bian编译的com就没有问题。
怎么回事呀。
arxing 2003-07-30
  • 打赏
  • 举报
回复
我昨天买了.net 2003的盘,但是装不上,7 张盘下面都找不到一些升级必备的文件。原来硬盘上有个.net 2002的安装盘,但是不小心被我搞坏了//.net root/windows updata/step.sdb文件,所以也没法升级。可否提供这个文件给我165546@21cn.com?
我相信不会是vc的bug,一定是别的地方没有做好,理论上只要是语法合适的cpp文件,肯定可以编译。
PP_Sky 2003-07-29
  • 打赏
  • 举报
回复
好像用到template时就很多错
arxing 2003-07-27
  • 打赏
  • 举报
回复
估计是预编译设置的问题。
如果你这个cpp设置为使用预编译,那么你就得把#include "stdafx.h"放在最前面,反过来,如果你不使用预编译,不能包含"stdafx.h"。
firingme 2003-07-27
  • 打赏
  • 举报
回复
http://www.sgi.com/tech/stl/stdlib_20000608.zip

这个包里面是SGI STL with IOStream的版本,2002下面能正常编译

拿到2003下面就有C1001错误,和楼主所述的一样!
RomanticProgrammer 2003-07-27
  • 打赏
  • 举报
回复
gz
PP_Sky 2003-07-27
  • 打赏
  • 举报
回复
我也认为不是预编译的问题。

内部编译器错误
(编译器文件 file,第 number 行)

编译器无法生成正确的构造代码,原因可能是出自表达式与优化选项的组合。尝试移除一个或多个优化选项,并重新编译包含错误信息所指示的行的函数。
以下是MSDN的说明,但问题是我根本就没有开任何的优化选项。
通过移除一个或多个优化选项有可能解决该问题。若要确定哪一个选项出了问题,请一次移除一个选项并重新编译,直到错误信息消失为止。通常最有可能导致此错误的选项有 /Og、/Oi 和 /Oa。确定了哪一个选项是症结所在后,则可以对发生错误的函数使用 optimize 杂注来禁用它,并为模块的其余部分继续使用该选项。

尝试重写报告错误的行或围绕该行周围的若干行。如果这不起作用,请与 Microsoft 产品支持服务联系。
firingme 2003-07-27
  • 打赏
  • 举报
回复
这个C1001的确很头疼的!

我也碰到过很多次这样的情况,代码在其他地方都能正常工作,可是到了VS2003下面,就C1001

我觉得这真是VS2003的一个大BUG

arxing(阿行) 说:

*******************************************************************************
估计是预编译设置的问题。
如果你这个cpp设置为使用预编译,那么你就得把#include "stdafx.h"放在最前面,反过来,
如果你不使用预编译,不能包含"stdafx.h"。
*******************************************************************************

如果是预编译的问题,那么出错信息将不会是C1001,会提示用户预编译不对头。


brave_heart 2003-07-26
  • 打赏
  • 举报
回复
>C1001: 内部编译器错误

It is a bug of Visual Studio.
加载更多回复(3)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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