Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++;节目? 在我们的C++程序中,我们要处理NetFlow数据。我们找到的唯一的工具是,我们已经安装了它,并且在命令行(Linux)上运行得非常好 流工具是用C编写的,因此我们认为可以将它作为C++程序库中的一个工具使用,但是我们不知道如何做。_C++_C_Linux_Include_Netflow - Fatal编程技术网

如何在C++;节目? 在我们的C++程序中,我们要处理NetFlow数据。我们找到的唯一的工具是,我们已经安装了它,并且在命令行(Linux)上运行得非常好 流工具是用C编写的,因此我们认为可以将它作为C++程序库中的一个工具使用,但是我们不知道如何做。

如何在C++;节目? 在我们的C++程序中,我们要处理NetFlow数据。我们找到的唯一的工具是,我们已经安装了它,并且在命令行(Linux)上运行得非常好 流工具是用C编写的,因此我们认为可以将它作为C++程序库中的一个工具使用,但是我们不知道如何做。,c++,c,linux,include,netflow,C++,C,Linux,Include,Netflow,流工具的gzip包含文件的c源代码,依赖项位于lib文件夹中 有可能做到这一点吗?如何做到?是否有流动工具的替代品?它声称是一个提供API的库,所以我认为这是可能的,甚至是有意的 如果您想使用它,您需要构建库,将它链接到您的应用程序,并使用文档(包括使用该库的附带命令行工具的源代码)了解如何使用API 好的,我目前的理解是,头文件和库都安装在您的系统上,并且您正在使用Debian软件包管理 首先,您需要知道库和头文件在哪里,以便告诉构建系统在哪里可以找到它们:try $ dpkg-query

流工具的gzip包含文件的c源代码,依赖项位于lib文件夹中


有可能做到这一点吗?如何做到?是否有流动工具的替代品?

它声称是一个提供API的库,所以我认为这是可能的,甚至是有意的

如果您想使用它,您需要构建库,将它链接到您的应用程序,并使用文档(包括使用该库的附带命令行工具的源代码)了解如何使用API


好的,我目前的理解是,头文件和库都安装在您的系统上,并且您正在使用Debian软件包管理

首先,您需要知道库和头文件在哪里,以便告诉构建系统在哪里可以找到它们:try

$ dpkg-query -L flow-tools
它应该为您提供安装flow tools头和lib的目录

因此,下一步是使这些头和库可用于构建系统:如果它们位于
/usr/lib
/usr/local/lib
/usr/include
/usr/local/include
中,则可以跳过路径。例如,如果您正在使用
make
构建,您可以添加如下内容

FLOW_TOOLS_INC = <directory containing .h files>
FLOW_TOOLS_LIB = <directory containing .a file(s)>
CXXFLAGS += -I$(FLOW_TOOLS_INC) -L$(FLOW_TOOLS_LIB)
现在(正如zr.所说),您需要将API声明引入到源代码中,并开始针对它编写代码,如下所示:

extern "C" {             // it is a C library, and we're building C++ (right?)
#include <flow-tools.h>  // or whatever the file name is
}
<代码>外部“C”{//它是C库,我们正在构建C++(右?) #包含//或任何文件名 } 有关如何使用该库的更多具体细节,请参阅随附的命令行util的文档和源代码(
apt get source flow tools
应获得此信息,或者只使用链接的tarball)


更具体的细节是如何配置你的编译系统,看看它的文档,或者问另一个问题,并实际地说它是什么。

< P>你提到你可以选择在C++代码中使用C库。它与使用C++库非常相似,唯一的区别在于,用“Extn”c“:/p>来包装您的声明”。
但是它已经用sudo-apt-get-install-flow工具安装在我的机器上了,难道它不应该已经可用吗?你没有提到,你描述了一个包含源代码的tarball!是的,如果您安装了该软件包,那么lib和相关的命令行工具(以及文档)可能已经可用。那么,问题是什么?我将如何着手包括这个?遵循zr提到的方法。导致“没有这样的文件或目录”-尝试编译时引发的错误。在整个驱动器中搜索头文件不会得到任何结果,因此我不知道我安装的软件包到底包含了什么,除了它是从命令行运行的,是的,文档也在那里。我目前正在尝试安装tarball,看看它是否能为我提供头文件?查看是否有
flow tools dev
软件包或类似软件包,或者只需搜索aptitude(或选择的软件包管理器)以查找flow工具,并查看缺少的内容。(注意,如果是这样的话,只需在我上面的编辑中将
flow tools
替换为
flow tools dev
。)啊,flow tools dev成功了。现在我知道了。谢谢你的帮助。是的,我已经看过了,所以我想我应该把我的问题缩小一点。我是否需要生成文件,或者是否可以将头文件及其源文件放在我的项目目录下的文件夹中?您是否询问如何链接库,或者如何管理您明显安装的软件包,或者是什么?如果您安装flow tools dev,您将在系统上安装所有预构建库(*.a)文件,那么你所需要做的就是针对它们进行链接。好吧,我在问如何针对库进行链接,以及为什么我显然不能使用我在程序中安装的包。@andersem,你还没有说你是如何尝试使用它的,或者为什么失败。这当然是可能的,而且可能是微不足道的。我已经添加了很多细节,但不知道你被困在哪里,这有点推测。
extern "C" {             // it is a C library, and we're building C++ (right?)
#include <flow-tools.h>  // or whatever the file name is
}
extern "C" {
   #include "c-lib-header.h"
 }

int main() {
 c_func1();
}