首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问下VC控制台下C语言连接时报错

2012-04-13 
请教下VC控制台下C语言连接时报错typedef struct Individual{double fitnessint **X}Indtypedef struct

请教下VC控制台下C语言连接时报错
typedef struct Individual
{
double fitness;
int **X;
}Ind;

typedef struct Population
{
int PDimension;
int PLength;
int PTotalNum;
int *PDesOrder;
Ind *PMatrix;
}Pop;

#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "math.h"

#define Dimension 2
#define TotalNum 20
#define Length 16
#define Pi 3.14159
#define Cross_Bit 8
#define VariationP 0.1
#define MaxConstant 100
#define DataNum 20

int Decimal_Binary(int d, int *b)
{
int i=0;
for(i=0;i<Length&&d;i++)
{
b[i]=d%2;
d=d/2;
}
if(i<Length)
{
while(i<Length)
{
b[i]=0;
i++;
}
}
else 
if(d)
{
printf("\nerror decimal to binary\n");
return 0;
}
return 1;
}

int Print_FloatArr(double *F)
{
int i=0;
printf("\n");
for(i=0;i<TotalNum;i++)
{
printf("%f ",F[i]);
}
printf("\n");
return 1;
}

int Print_IntegerArr(int *I)
{
int i=0;
printf("\n");
for(i=0;i<Length;i++)
{
printf("%d ",I[i]);
}
printf("\n");
return 1;
}

int Print_Pop(Pop *P)
{
int i=0,j=0;
printf("\nDimension: %d\n",P->PDimension);
printf("\nTotal Number: %d\n",P->PTotalNum);
printf("\nLength: %d\n",P->PLength);
for(i=0;i<P->PTotalNum;i++)
{
printf("\nfitness: %f\n",P->PMatrix[i].fitness);
for(j=0;j<P->PDimension;j++)
{
Print_IntegerArr(P->PMatrix[i].X[j]);
}
}
return 1;
}

int Operator_Cross(int *g1, int *g2)
{
int pst=Cross_Bit;
int i=0;
int temp=0;
for(i=0;i<pst;i++)
{
temp=g1[i];
g1[i]=g2[i];
g2[i]=temp;
}
return 1;
}

int Creat_Roulette(double *R)
{
int i=0;
double temp=0;
for(i=0;i<TotalNum;i++)
{
R[i]=temp+R[i];
temp=R[i];
}
R[i-1]=1.1;
return 1;
}

int Choose_Operator(double *R, int *s)
{
int i=0;
double random=0;
double temp=0;
random=((double)(rand()%1000))/1000;
for(i=0;i<TotalNum;i++)
{
if(random>=temp&&random<R[i])
{
*s=i;
return 1;
}
temp=R[i];
}
printf("\nChoose Operator error\n");
return 0;
}

int Binary_Decimal(int *B, int *d)
{
int i=0;
int be=1;
*d=0;
for(i=0;i<Length;i++)
{
*d=*d+B[i]*be;
be=be*2;
}
return 1;
}

int FindTMinFit(double *M,int *index,int L)
{
double p=0;
int ip=0;
int i=0,j=0;
double *F;
F=(double *)malloc(sizeof(double)*L);
while(i<L)
{
F[i]=M[i];
i++;
}
i=0;
for(i=0;i<TotalNum;i++)
{
p=F[0];
ip=0;
for(j=0;j<L;j++)
{
if(F[j]<p)
{
ip=j;
p=F[j];
}
}
index[i]=ip;
F[ip]=MaxConstant;
}
return 1;
}

int Binary_Gray(int *B, int *G)
{
int i=0;
int temp=0;
for(i=Length-1;i>=0;i--)
{
G[i]=(temp+B[i])%2;
temp=B[i];
}
return 1;
}

int Gray_Binary(int *G, int *B)
{
int i=0,j=0;
int temp=0;
for(i=Length-1;i>=0;i--)
{
temp=0;
for(j=Length-1;j>=i;j--)
{
temp+=G[j];
}
B[i]=temp%2;
}
return 1;
}

//#define TestCodCag
//#ifdef TestCodCag

int main()


{
int d;
int B[Length];
int G[Length];
printf("\ninput a decimal:\n");
scanf("%d",&d);
Decimal_Binary(d,B);
Binary_Gray(B,G);
Gray_Binary(G,B);
Binary_Decimal(B,&d);
printf("\n%d\n",d);
return 1;
}
//#endif

//#define TestOC
#ifdef TestOC

int main()
{
int i=0;
int d=0,e=0;
int *b,*c;
b=(int *)malloc(sizeof(int)*Length);
c=(int *)malloc(sizeof(int)*Length);
printf("\ninput d,e:\n");
scanf("%d,%d",&d,&e);
if((Decimal_Binary(d,b)&&Decimal_Binary(e,c))==0)
{
return 0;
}
Print_IntegerArr(b);
Print_IntegerArr(c);
Operator_Cross(b,c);
Print_IntegerArr(b);
Print_IntegerArr(c);
return 1;
}
#endif

//#define DTBTest

#ifdef DTBTest

int main()
{
int i=0;
int d=0;
int *b;
b=(int *)malloc(sizeof(int)*Length);
printf("\ninput d:\n");
scanf("%d",&d);
if(Decimal_Binary(d,b)==0)
{
return 0;
}
for(i=0;i<Length;i++)
{
printf("%d ",b[i]);
}
return 1;
}

#endif

连接时报错:

Compiling...
Skipping... (no relevant changes detected)
MainPro.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/MainPro.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

MainPro.exe - 2 error(s), 0 warning(s)


[解决办法]
函数的声明写在.h文件 函数的实现写在.cpp文件

你估计是把实现写在.h

然后多个cpp包含这个.h 就会出现link错误 因为色情 所以不会轻易悲伤 每个cpp生成的obj里都有了那个.h里的函数 就already defined

热点排行