请帮我看一下,在MFC中,我调用全局函数Hpb_Segment(CDib* pDib),这个没有问题,(注:Hpb_Segment(CDib* pDib)我已经在GloApi.h中申明过了。)。但是Hpb_Segment(CDib* pDib)函数中我将调用一个新的全局函数Gmm_EM(pp,a,M,det)(这个我也在GloApi.h中申明过了),但是就是调用不了,不知道为什么?错误提示:GAUSS.cpp(86) : error C2065: 'Gmm_EM' : undeclared identifier
不知道为何没有申明成功。
/////////////////////////////////////////////////////////////////////
#ifndef _GLOBAL_API                  这是GloApi.h中的申明
#define _GLOBAL_API
#include <math.h>
#include "cdib.h"
#include "ColorTable.h"
#include <complex>
using namespace std;//-------------------------------------------------------------
//高斯处理
void Hpb_Segment(CDib* pDib);
void Gmm_EM(int *pp,double a,int M,double det);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "GlobalApi.h"         以下 是.cpp中的函数
#include "stdafx.h"
#include "cdib.h"
#include "math.h"
#include <direct.h>
#include <complex>using namespace std;void Hpb_Segment(CDib* pDib)
{
unsigned char* lpSrc; // 直方图
int nCount[256];
// 循环变量
int i,j;
int hpb_A=0;//最多像素个数是哪一级
int hpb_L=0;//灰度级数
int hpb1[256];//各个直方图中像素的位置的存储位置。晕了
int hpb2[256];

int *pp=new int[hpb1[255]];
double a=1.0;
int M=2;
double det=10e-5;
Gmm_EM(pp,a,M,det);


delete[] pp;
}void Gmm_EM(int *pp,double a,int M,double det)
{
int bb;
//....................} 

解决方案 »

  1.   

    把两个函数的声明和实现换一下?把void Gmm_EM(int *pp,double a,int M,double det)
    放在前边试试
      

  2.   

    错误提示:GAUSS.cpp(86) : error C2065: 'Gmm_EM' : undeclared identifier
    ========================================================================
    错误在GAUSS.cpp中,你的'Gmm_EM'在GAUSS.cpp文件中使用了没有引入响应的头文件,要#include "GloApi.h"
      

  3.   

    把#include "GlobalApi.h"
    放到#include "stdafx.h"下面试试
      

  4.   

    我的上面那个申明的注释写错了。没有GloApi.h,只有GlobalApi.h,我都申明过了,呵呵