在同一个应用程序中使用浮动和双重支持编译 kiss fft
Compiling kiss fft with float and double support in the same app
我正在尝试让 kiss fft 使用 visual studio 2013 在同一个应用程序中编译 float 和 double 实现。我看到我需要做的就是将 kiss_fft_scalar 设置为 double和 re-compile 获得双倍。
为此,我整理了一个 header,其中我将 header 和 kiss_fft_scalar 包含在 2 个不同的命名空间中,如下所示:
namespace KissFloat
{
#undef KISS_FFT_H
#undef KISS_FTR_H
#define kiss_fft_scalar float
#include "kiss_fft.h"
#include "tools/kiss_fftr.h"
};
namespace KissDouble
{
#undef KISS_FFT_H
#undef KISS_FTR_H
#define kiss_fft_scalar double
#include "kiss_fft.h"
#include "tools/kiss_fftr.h"
};
但是我不知道如何包含 cpp 代码。我尝试了一个单独的 KissFloat 和 KissDouble 文件。然后我在 cpp 文件中尝试了一些东西,但我尝试的一切都以编译错误告终。通常与结构重新定义有关。
谁能想出办法让这个工作?或者我只是更好 re-writing 使用模板亲吻 fft?
有趣的想法,但你可能更幸运地破解文件,例如使 kiss_fft_scalar
成为模板参数。一个问题是头文件将包括其他头文件,如 stdlib.h
。我想您可以在执行名称空间技巧之前先发制人地包含这些文件。
我猜结构重新定义错误是针对 _kiss_fft_guts.h
中的 kiss_fft_state
?
如果您在包含 .c 文件之前有单独的 Float/Double .cpp 文件和 using 指令,它可能会起作用。
如果您决定对其进行模板化,您可以查看 Eigen (partial) c++ port of kissfft.
所以我发现 Eigen 已经为我完成了模板化 kiss FFT 的工作。为其他努力工作的人欢呼! ;)
Eigen 在此处可用:
https://bitbucket.org/eigen/eigen/src
kiss fft 实现在
"unsupported/Eigen/src/FFT/"
我正在尝试让 kiss fft 使用 visual studio 2013 在同一个应用程序中编译 float 和 double 实现。我看到我需要做的就是将 kiss_fft_scalar 设置为 double和 re-compile 获得双倍。
为此,我整理了一个 header,其中我将 header 和 kiss_fft_scalar 包含在 2 个不同的命名空间中,如下所示:
namespace KissFloat
{
#undef KISS_FFT_H
#undef KISS_FTR_H
#define kiss_fft_scalar float
#include "kiss_fft.h"
#include "tools/kiss_fftr.h"
};
namespace KissDouble
{
#undef KISS_FFT_H
#undef KISS_FTR_H
#define kiss_fft_scalar double
#include "kiss_fft.h"
#include "tools/kiss_fftr.h"
};
但是我不知道如何包含 cpp 代码。我尝试了一个单独的 KissFloat 和 KissDouble 文件。然后我在 cpp 文件中尝试了一些东西,但我尝试的一切都以编译错误告终。通常与结构重新定义有关。
谁能想出办法让这个工作?或者我只是更好 re-writing 使用模板亲吻 fft?
有趣的想法,但你可能更幸运地破解文件,例如使 kiss_fft_scalar
成为模板参数。一个问题是头文件将包括其他头文件,如 stdlib.h
。我想您可以在执行名称空间技巧之前先发制人地包含这些文件。
我猜结构重新定义错误是针对 _kiss_fft_guts.h
中的 kiss_fft_state
?
如果您在包含 .c 文件之前有单独的 Float/Double .cpp 文件和 using 指令,它可能会起作用。
如果您决定对其进行模板化,您可以查看 Eigen (partial) c++ port of kissfft.
所以我发现 Eigen 已经为我完成了模板化 kiss FFT 的工作。为其他努力工作的人欢呼! ;)
Eigen 在此处可用:
https://bitbucket.org/eigen/eigen/src
kiss fft 实现在
"unsupported/Eigen/src/FFT/"