注册 登录
编程论坛 C++教室

偶在运行程序的时候有报错,不知道啥意思

发布于 2010-05-06 12:43, 416 次点击
--------------------Configuration: main - Win32 Debug--------------------
Linking...
main.obj : error LNK2001: unresolved external symbol "void __cdecl dianliwangmoxing(float (* const)[60],float (* const)[60])" (?dianliwangmoxing@@YAXQAY0DM@M0@Z)
Debug/main.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

main.exe - 1 error(s), 0 warning(s)
5 回复
#2
最近不在2010-05-06 13:02
应该是你调用函数的时候,或者定义的时候,函数名字写的与申明的不一致,注意看一下是否误写了。这个报错的意思是无法找到dianliwangmoxing(float (* const)[60],float (* const)[60])函数,一个未解决的外部调用
#3
ltyjyufo2010-05-06 15:41
  把代码贴上来看看
#4
2010-05-06 19:04


主函数是:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include"dingyi.h"
#include"shengming.h"

 /*********************************************************************************************
函数名: main()
函数功能: 进行电力系统暂态分析
参数: 无
返回值: 无
********************************************************************************************/
void main()
{   
   int i,j,k,z,l;
    float g[M][M],b[M][M];
   
                /*g+jb是化简后的矩阵*/
/*******************************************************************************************
函数名:guisuan()
功能:将电力系统中的有名值归算为标幺值,并将归算结果在“基准值归算.txt”中输出
返回值:无
参数:无
********************************************************************************************/
    guisuan();
/*********************************************************************************************
函数名: chaoliujisuan()
函数功能: 计算电力网络中的潮流,形成整个网络的节点导纳矩阵,并将潮流计算结果与节点导纳矩阵在“潮
           流计算.txt”中输出
参数: 无
返回值: 无
********************************************************************************************/
    chaoliujisuan();
/*********************************************************************************************
函数名: dianliwangmoxing
函数功能: 形成只含有源节点的电力网络节点导纳矩阵
参数: 无
返回值: 由矩阵(g+jb)带回
********************************************************************************************/
    dianliwangmoxing(g,b);
}


外部函数是:

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include"dingyi.h"
#include"shengming.h"
/*********************************************************************************************
函数名: dianliwangmoxing
函数功能: 形成只含有源节点的电力网络节点导纳矩阵
参数: 无
返回值: 由矩阵(g+jb)带回
********************************************************************************************/
void dianliwangmoxing(float g[M][M],float b[M][M])
{
    int i,j,k,z,l;
    int s1,s2;
    float g1[M][M]={0.0},b1[M][M]={0.0},zd[2]={0.0};/*zd用来存储附加电抗*/
    float Re,Im,B0;
    s1=DL.A;s2=DL.B;
    fujiadiankang(zd);
    for(i=1;i<+n;i++)
        for(j=1;j<+n;j++)
        {
            g[i][j]=G[i][j];
            b[i][j]=B[i][j];
        }
    for(i=1;i<=m4;i++)
    {
        if(Xl[i].A==s1&&Xl[i].B==s2||Xl[i].B==s1&&Xl[i].A==s2)
        {
            Re=Xl[i].R/(Xl[i].R*Xl[i].R+Xl[i].Xl1*Xl[i].Xl1);
            Im=-Xl[i].Xl1/(Xl[i].R*Xl[i].R+Xl[i].Xl1*Xl[i].Xl1);
            B0=Xl[i].B0;
        }
    }
    /*以下是形成含短路点的节点导纳矩阵*/
    g[s1][n+1]=-Re/DL.c;            g[n+1][s1]=g[s1][n+1];
    g[s2][n+1]=-Re/(1-DL.c);        g[n+1][s2]=g[s2][n+1];
    b[s1][n+1]=-Im/DL.c;            b[n+1][s1]=b[s1][n+1];
    b[s2][n+1]=-Im/(1-DL.c);        b[n+1][s2]=b[s2][n+1];
    g[n+1][n+1]=-g[s1][n+1]-g[s2][n+1]+zd[0]/(zd[0]*zd[0]+zd[1]*zd[1]);
    b[n+1][n+1]=-b[s1][n+1]-b[s2][n+1]-zd[1]/(zd[0]*zd[0]+zd[1]*zd[1])+B0/2;
    g[s1][s1]=g[s1][s1]-Re/(1-DL.c);
    b[s1][s1]=b[s1][s1]-Im/(1-DL.c)-B0/2+B0*DL.c/2;
    g[s2][s2]=g[s2][s2]-Re/DL.c;
    b[s2][s2]=b[s2][s2]-Im/DL.c-B0/2+B0*(1-DL.c)/2;
    /*将发电机,负荷,短路点提前,以便于简化无源节点*/
    for(k=1;k<=m1;k++)
    {
        s1=DY[k].A;
        for(i=1;i<=n+1;i++)
            for(j=1;j<=n+1;j++)
            {
                g1[k][j]=g[s1][j]; b1[k][j]=b[s1][j];
                g1[i][k]=g[i][s1]; b1[i][k]=b[i][s1];
            }
    }
    for(k=m1+1;k<=m1+m2;k++)
    {
        s1=FH[k-m1].A;
        for(i=1;i<=n+1;i++)
            for(j=1;j<=n+1;j++)
            {
                g1[k][j]=g[s1][j]; b1[k][j]=b[s1][j];
                g1[i][k]=g[i][s1]; b1[i][k]=b[i][s1];
            }
    }
    k=m1+m2+1;s1=n+1;
    for(i=1;i<=n+1;i++)
            for(j=1;j<=n+1;j++)
            {
                g1[k][j]=g[s1][j]; b1[k][j]=b[s1][j];
                g1[i][k]=g[i][s1]; b1[i][k]=b[i][s1];
            }
    for(l=1;l<=n;l++)
        if(JD[l].w!=1)
        {
            k=k+1;  s1=JD[i].num;
            for(i=1;i<=n+1;i++)
                for(j=1;j<=n+1;j++)
                {
                     g1[k][j]=g[s1][j]; b1[k][j]=b[s1][j];
                     g1[i][k]=g[i][s1]; b1[i][k]=b[i][s1];
                }
        }
        

    jianhua(g1,b1,n+1,m1+m2+1,g,b);
}
    其他外部函数就不列举了
谢谢检查!!!!!!!!!!!!!
#5
2010-05-06 19:07
shengming.h头文件的内容是
#ifndef shengming
#define shengming
void duru();
void guisuan() ;   /*各元件参数的归算*/
void fujiadiankang(float zd[2]);
void jianhua(float G1[M][M],float B1[M][M],int a,int b,float G2[M][M],float B2[M][M]);
           /*(G1+jB1)(a*a阶)为需要化简的节点导纳矩阵,(G2+jB2)(b*b阶)为简化的结果*/
           
void dengzhidiankang(float G1[M][M],float B1[M][M],int n1,float result[2]);
           /*矩阵(G1+jB1)(n1*n1阶)为节点导纳矩阵,短路点位于最后一行,结果存储到result中*/
void juzhenqiuni(float g[M][M],float b[M][M],int n1);
                /*要求逆的矩阵为(g+jb)是n1*n1阶矩阵,得到的逆矩阵仍然由(g+jb)带回*/
void juzhenchengfa(float G1[M][M],float B1[M][M],float G2[M][M],float B2[M][M],float G3[M][M],float B3[M][M],int a,int b);
                /*为矩阵(G1+jB1)(a*b阶)与矩阵(G2+jB2)(b*a阶)的乘法结果为(G3+jB3)(a*a阶)*/
void juzhenjianfa(float G1[M][M],float B1[M][M],float G2[M][M],float B2[M][M],float G3[M][M],float B3[M][M],int a,int b);
                /*为矩阵(G1+jB1)(a*b阶)与矩阵(G2+jB2)(a*b阶)的减法结果为(G3+jB3)(a*b阶)*/
void chaoliujisuan() ;
void dianliwangmoxing(float g[M][M],float b[M][M]);



#endif
#6
2010-05-06 19:09
偶不是通过建立一个工程的方法来建立文件的  而是直接建立txt文档以后重命名为.cpp文件  没啥问题吧???
1