程序由两个文件构成,如何用VC编译、连接?
zcsd 2003-08-23 07:50:24 //file1:p29.cpp
#include<iostream>
#include"d:\c++\p30.cpp"
using namespace std;
//---------------------------------------------------------
int Am,An;
static int ASx,ASy;
//---------------------------------------------------------
void Func1();
void Func2();
void Func3();
//---------------------------------------------------------
int main()
{
cout<<"执行过Func1()\n";
Func1();
cout<<"Am的值是:"<<Am<<endl;
cout<<"An的值是:"<<An<<endl;
cout<<endl;
cout<<"执行过Func2()\n";
Func2();
cout<<"Am的值是:"<<Am<<endl;
cout<<"An的值是:"<<An<<endl;
cout<<"\n执行过Func3()\n";
Func3();
return 0;
}
extern int Bp;
//---------------------------------------------------------
void Func3()
{
cout<<"Bp的值是:"<<Bp<<endl;
cout<<endl;
}
//---------------------------------------------------------
//---------------------------------------------------------
//file2:p30.cpp
int Bp;
extern int Am,An;
//---------------------------------------------------------
void Func1()
{
Bp=2;
Am=8;
}
//---------------------------------------------------------
void Func2()
{
Am+=10;
An=27;
}
在VC下link时有4个错误LNK2005。
"void __cdecl Func1(void)" (?Func1@@YAXXZ) already defined in p29.obj;
"void __cdecl Func2(void)" (?Func2@@YAXXZ) already defined in p29.obj;
"int Bp" (?Bp@@3HA) already defined in p29.obj;
one or more multiply defined symbols found;
我自己分析:
p29.cpp中的void func1(); void func2();只是原型声明,具体定义在p30.cpp中。
同样,p29.cpp中的extern int Bp只是声明Bp在另一文件p30.cpp中有定义。
但是,VC编译器不这样理解,没办法。
要不就是我的联调方法不对,如#include"d:\c++\p30.cpp",不对。
请高手指点迷津!诚谢!