热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

#新手#LNK2005(xx函数在obj中已定义)书上的FFT算法程序报错

错误如下:e:\programfiles\microsoftvisualstudio12.0\vc\include\stdio.h(211):参见“fopen”的声明1>
 错误如下:
 e:\program files\microsoft visual studio 12.0\vc\include\stdio.h(211) : 参见“fopen”的声明
1>fftm1源.obj : error LNK2005: "void __cdecl fft1(double (* const)[1024],int)" (?fft1@@YAXQAY0EAA@NH@Z) 已经在 fft1.obj 中定义
1>fftm1源.obj : error LNK2005: "void __cdecl initial(void)" (?initial@@YAXXZ) 已经在 fft1.obj 中定义
1>fftm1源.obj : error LNK2005: "unsigned long __cdecl inverseq(unsigned long,unsigned long)" (?inverseq@@YAKKK@Z) 已经在 fft1.obj 中定义
1>E:\aa\research分类\8.code\C\ji2fft\Debug\ji2fft.exe : fatal error LNK1169: 找到一个或多个多重定义的符号


fftm1源.cpp程序如下:
#define N 1024
#include"fft1.cpp"
void functf(double A[2][N]);

int main()
{
unsigned long int i;
static double A[2][N];
FILE *fp;
fp = fopen("fftm1.d","w");
system("cls");
functf(A);
fprintf(fp, "The original data,AK:\n");
printf("The original data,AK:\n");
for (i = 0; i < N; i++)
fprintf(fp, "%4lu:%15.9f%16.9%ei\n", i, A[0][i], A[1][i]);
fft1(A, 1);
fprintf(fp, "FFT,dtrect transform(AK->xj),xj:\n");
printf("FFT,dtrect transform(AK->xj),xj:\n");
for (i = 0; i < N;i++)
fprintf(fp, "%4lu:%15.9f%16.9%ei\n", i, A[0][i], A[1][i]);
fft1(A, -1);
fprintf(fp, "FFT,inverse transform(x->A),AK:\n");
printf("FFT,inverse transform(x->A),AK:\n");
for (i = 0; i < N; i++)
fprintf(fp, "%4lu:%15.9f%16.9%ei\n", i, A[0][i], A[1][i]);
fclose(fp);
printf("OK!\n");
return 0;
}

void functf(double A[2][N])
{
unsigned long int i;
double dt, tt, A0, A1;
dt = 0.1;
tt = (double)N*dt;
A0 = exp(-tt);
for (i = 0; i < N; i++)
{
tt = (double)i*dt;
A1 = exp(-tt);
A[0][i] = (A1 + A0 / A1)*dt;
A[1][i] = 0.0;
}
}

fft1.cpp程序如下:
#include
#include
#include
#ifndef N //'if not defined'的缩写,防止头文件的重复包含和编译
#define N 1024//如果N没有被宏定义过,定义N
#endif //终止if
#define eps 1.0e-9

void initial(void);//initial函数
void fft1(double A[2][N], int ifft);//fft1函数
unsigned long int inverseq(unsigned long int i1, unsigned long int imax);//inverseq函数

static int ifirst = 0, sign = -1;
static unsigned M, jup[16], kup[16];
static double pi, wr[N], wi[N];



void initial(void)
{
unsigned long int i, j, ni;
double unit, tt;
ni = N;
M = 0;
while (ni > 1)
{
ni = ni / 2;
M = M + 1;
}
ni = 1;
for (j = 0; j < M; j++)
ni = ni * 2;
if ((ni - N) != 0)
{
printf("N isn't compatible!\nStrike any key to exit!\n");
getchar();//getchar函数从标准输入里读取下一个字符,返回类型为int型,返回值为用户输入的ASCⅡ码,出错返回EOF。使用的时候要包含stdio.h头文件
exit(1);
}
kup[0] = N / 2;
jup[0] = 1;
for (j = 1; j< M; j++)
{
kup[j] = kup[j - 1] / 2;
jup[j] = jup[j - 1] * 2;
}
pi = 3.1415;
unit = 2.0*pi / ((double)N);
tt = 0.0;
for (i = 0; i < N; i++)
{
wr[i] = cos(tt);
wi[1] = sign*sin(tt);
tt = tt + unit;
}
}

unsigned long int inverseq(unsigned long int i1, unsigned long int imax)
{
unsigned long int j, ii, i0, inv;
i0 = i1;
inv = 0;
for (j = 0; j < imax; j++)
{
ii = i0 % 2;
inv = 2 * inv + ii;
i0 = (i0 - ii) / 2;
}
return(inv);
}

void fft1(double A[2][N], int ifft)
{
unsigned long int l, k, i, j, jl0, jl0k, jl1k, reseq, ij;
double wrc, wis, ar, ai, x[2][N];

if (ifirst == 0)
{
initial(),
ifirst = 1;
}
if (ifft == -1)
for (i = 0; i < M; i++)
A[1][i] = -A[1][i];
for (l = 0; l < M; l++)
{
for (j = 0; j < jup[l]; j++)
{
reseq = inverseq(j, l);
ij = kup[l] * reseq;
jl0 = 2 * kup[l] * j;
wrc = wr[ij];
wis = wi[ij];
for (k = 0; k < kup[l]; k++)
{
jl0k = jl0 + k;
jl1k = jl0 + kup[l] + k;
ar = A[0][jl1k] * wrc - A[1][jl1k] * wis;
ai = A[0][jl1k] * wis - A[1][jl1k] * wrc;
A[0][jl1k] = A[0][jl0k] - ar;
A[1][jl1k] = A[1][jl0k] - ai;
A[0][jl0k] = A[0][jl0k] + ar;
A[1][jl0k] = A[1][jl0k] + ai;
}
}
}
for (i = 0; i < N; i++)
{
j = inverseq(i, M);
x[0][i] = A[0][j];
x[1][i] = A[1][j];
}
for (i = 0; i  {
A[0][i] = x[0][i];
A[1][i] = x[1][i];
}
if (ifft == -1)
for (i = 0; i < N; i++)
{
A[0][i] = A[0][i] / ((double)N);
A[1][i] = -A[1][i] / ((double)N);
}
}

曾经用 #pragma once试过仍报错。用extern也声明过,也没有用。可能是我用的方法不对吧,感觉是头文件或者是全局变量出了问题,但是实在不知道应该怎么改,求指导!谢谢

4 个解决方案

#1


#include"fft1.cpp"
----------------->
#include"fft1.h"    ???

#2


新建一个fft1.h 头文件,把
void initial(void);//initial函数
void fft1(double A[2][N], int ifft);//fft1函数
unsigned long int inverseq(unsigned long int i1, unsigned long int imax);//inverseq函数
这三个函数放到fft1.h中进行声明,fft1.cpp中#include fft1.h后仅作那些函数的定义实现

然后在fftm1源.cpp中#include"fft1.h" 即可,不要#include"fft1.cpp" 

#3


出来啦!谢谢!!

#4


引用 3 楼 qq_29522371 的回复:
出来啦!谢谢!!

那就结贴吧

推荐阅读
  • C++构造函数与初始化列表详解
    本文深入探讨了C++中构造函数的初始化列表,包括赋值与初始化的区别、初始化列表的使用规则、静态成员初始化等内容。通过实例和调试证明,详细解释了初始化列表在对象创建时的重要性。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了《魔兽世界》中红蓝两方阵营在备战阶段的策略与实现方法,通过代码展示了双方如何根据资源和兵种特性进行战士生产。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 在多线程编程环境中,线程之间共享全局变量可能导致数据竞争和不一致性。为了解决这一问题,Linux提供了线程局部存储(TLS),使每个线程可以拥有独立的变量副本,确保线程间的数据隔离与安全。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 文件描述符、文件句柄与打开文件之间的关联解析
    本文详细探讨了文件描述符、文件句柄和打开文件之间的关系,通过具体示例解释了它们在操作系统中的作用及其相互影响。 ... [详细]
author-avatar
潘PanPanPq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有