一个有关源程序在编译与链接时的问题
我在写完程序运行时,发现有以下问题:
一:这个是在运行时给出的一个对话框中的话,需要选择是否继续,如果继续则程序运行,并且能够得到正确结果。源程序如下
Error reading debug infomation:build with invalid linker.Run anyway?
#include<iostream.h>
int global;
void f()
{global=5;}
void g()
{cout<<global<<endl;}
int main()
{
f();
g();
return 0;
}
二:在编译与链接运行下面这个程序时就没有上面那个幸运了,编译器直接给出错误信息,程序无法运行。如下:
Linker Warning:No module definition file specified:using defaults
Linker Error:Undefined symbol OwlMain(int,char far*far*) in library file d:\bc4\lib\owlwi.lib in module winmain
#include<iostream.h>
class point
{
public:
point(int xx=0,int yy=0){x=xx;y=yy;countp++;}
point(point &p);
int getx(){return x;}
int gety(){return y;}
void getc(){cout<<"Object id="<<countp<<endl;}
private:
int x,y;
static int countp;
};
point::point(point &p)
{
x=p.x;
y=p.y;
countp++;
}
int point::countp=0;
void main()
{
point a(4,5);
cout<<"Point A,"<<a.getx()<<","<<a.gety();
a.getc();
point b(a);
cout<<"Point B,"<<b.getx()<<","<<b.gety();
b.getc();
}
后来我修改了一下directory:将lib库的目录由d:\bc4\lib改为d:\bc4\lib;d:\bc4\owl\lib,结果出现下面的错误信息,程序依然无法运行。
Linker Fatal:unable to open file 'cOwl.obj'
我现在有两点疑问:这是怎么回事?还有,为什么我将directory修改后会有变化,而d:\bc4\owl\lib是实际中不存在的啊。
恳请各位给予解答。
问题点数:40、回复次数:11Top
1 楼LoopyPuzzle(浪子无名)回复于 2003-08-03 17:59:52 得分 0
补充一点:我用的编译器是Borland C++ 4.0,安装路径为:d:\bc4Top
2 楼LoopyPuzzle(浪子无名)回复于 2003-08-03 18:48:21 得分 0
哎,为什么没有人回答啊?自己up先。Top
3 楼LoopyPuzzle(浪子无名)回复于 2003-08-03 21:55:09 得分 0
不会吧?还没有关注?我再up!Top
4 楼aflyinghorse()回复于 2003-08-03 23:08:04 得分 5
第一个问题我在dev-cpp下运行正常,没问题
第二个问题我在dev-cpp下运行也正常
可能是你的设置有问题吧Top
5 楼huigll(会)回复于 2003-08-03 23:14:04 得分 2
bc4?
没有用过,不知道怎么办,帮你up
期待。
或许是include 或者lib 的路径不对?Top
6 楼gernal_dn()回复于 2003-08-04 01:01:44 得分 25
BC?多年未用,不知说得对不对。
BC4好象是运行在DOS以及Windows3.1下的,可以编16位的DOS程序和Win31程序,它编Win31时使用一个很少见的OWL库,编DOS时是不能用这个库的。
你第二个程序明明是DOS的,却提示OWL,是不是你建立工程时是建立Win31的工程,导致编译环境不正常?
Top
7 楼gernal_dn()回复于 2003-08-04 01:04:53 得分 0
从Linker Fatal:unable to open file 'cOwl.obj'这个信息看,你确实是建立Win工程!
Top
8 楼LoopyPuzzle(浪子无名)回复于 2003-08-04 23:17:37 得分 0
我用的是BC4 for win的,可能用的是默认工程,也许就是win31的工程。
但是在改过之后又出现一个问题,它提示:Linker Error:Undefined symbol _main in module c0.ASM。这又是什么意思啊?
(我原来使用的是Turbo C++ 3.1,从装系统后就出了问题,又重装不上,只好用这个。)Top
9 楼antijpn(antijpn)回复于 2003-08-05 00:22:24 得分 0
第二个程序无论我用Borland的编译器还是MS的编译器都无法通过Top
10 楼antijpn(antijpn)回复于 2003-08-05 12:39:15 得分 8
我检查过了,getc在iostream里面是一个宏定义,在编译检查的时候就无法通过了Top
11 楼LoopyPuzzle(浪子无名)回复于 2003-08-05 23:51:12 得分 0
我认为这个与getc没有关系啊。因为我还曾经有一个程序也是出现上述错误。但是那个只是一个有关函数模板的程序,没有getc。我想gernal_dn()说的可能有道理,所以我试了一下,结果出现了我上贴所说的新问题。但是我的程序应该是没有问题的,因为那是我原来在TurboC++下写的,而且也运行成功了。这只是TC3.1坏了,我改用BC4后出现的问题。所以我想问清楚到底是怎么回事。Top




