如何在 C++ 中使用 Fresnel 积分 C 库?
How do I use a Fresnel integral C Library in c++?
我在我的 C++ 应用程序中包含了菲涅尔积分库 (http://www.mymathlib.com/functions/fresnel_sin_cos_integrals.html)。
假设我有以下 C++ 代码 (main.cpp):
#include "include/Fresnel/fresnel_sine_integral.c"
using namespace std;
int main()
{
return 0;
}
但是当我这样编译程序时:
g++ main.cpp
我收到以下错误:
In function `xFresnel_Sine_Integral(long double)':
main.cpp:(.text+0x66): undefined reference to `xFresnel_Auxiliary_Cosine_Integral(long double)'
main.cpp:(.text+0x8d): undefined reference to `xFresnel_Auxiliary_Sine_Integral(long double)'
collect2: error: ld returned 1 exit status
我是否必须 link 以另一种方式将该库添加到我的 C++ 应用程序中?还是我必须用其他方式编译?
我认为您需要从您引用的 C 源文件制作 一个库。它们还不够self-contained。
我建议构建您的构建以编译 .c
源文件以及您自己的应用程序源,并将全部链接到一个可执行文件中。您需要从每个 .c
文件中提取函数声明并将它们放入 .h
header 中。你会 #include
在你自己的源代码中 header ,并且可能在 .c
文件中,除非你希望每次编译时都有 screen-full 编译器警告。
您需要决定是将 .c
文件编译为普通 C 文件,还是将它们重命名并编译为 C++。您可能必须修改它们,C++ 编译器才能毫无怨言地编译它们。如果将它们保留为 C,则需要安排将这些文件编译为 C,并将您自己的文件编译为 C++。因此,您制作的 header 需要同时与 C 和 C++ 兼容——这方面有标准技术,我可以就此提出建议(但可能已经有关于 SO 的内容)。
如果这是我要解决的问题,我会考虑将所有 .c
文件合并到一个文件中,并且 fiddle 它是好的 C++(可能不难)。我将从 C 源代码中的声明创建一个 header,适合包含在 C++ 源代码中(因为现在都是 C++)。但是,我不确定原始文件是否以允许这样做的方式获得许可 - 我想这是您需要与作者核实的内容。
我在我的 C++ 应用程序中包含了菲涅尔积分库 (http://www.mymathlib.com/functions/fresnel_sin_cos_integrals.html)。
假设我有以下 C++ 代码 (main.cpp):
#include "include/Fresnel/fresnel_sine_integral.c"
using namespace std;
int main()
{
return 0;
}
但是当我这样编译程序时:
g++ main.cpp
我收到以下错误:
In function `xFresnel_Sine_Integral(long double)':
main.cpp:(.text+0x66): undefined reference to `xFresnel_Auxiliary_Cosine_Integral(long double)'
main.cpp:(.text+0x8d): undefined reference to `xFresnel_Auxiliary_Sine_Integral(long double)'
collect2: error: ld returned 1 exit status
我是否必须 link 以另一种方式将该库添加到我的 C++ 应用程序中?还是我必须用其他方式编译?
我认为您需要从您引用的 C 源文件制作 一个库。它们还不够self-contained。
我建议构建您的构建以编译 .c
源文件以及您自己的应用程序源,并将全部链接到一个可执行文件中。您需要从每个 .c
文件中提取函数声明并将它们放入 .h
header 中。你会 #include
在你自己的源代码中 header ,并且可能在 .c
文件中,除非你希望每次编译时都有 screen-full 编译器警告。
您需要决定是将 .c
文件编译为普通 C 文件,还是将它们重命名并编译为 C++。您可能必须修改它们,C++ 编译器才能毫无怨言地编译它们。如果将它们保留为 C,则需要安排将这些文件编译为 C,并将您自己的文件编译为 C++。因此,您制作的 header 需要同时与 C 和 C++ 兼容——这方面有标准技术,我可以就此提出建议(但可能已经有关于 SO 的内容)。
如果这是我要解决的问题,我会考虑将所有 .c
文件合并到一个文件中,并且 fiddle 它是好的 C++(可能不难)。我将从 C 源代码中的声明创建一个 header,适合包含在 C++ 源代码中(因为现在都是 C++)。但是,我不确定原始文件是否以允许这样做的方式获得许可 - 我想这是您需要与作者核实的内容。