带有C+的C库+;解决方案 我是C++新手,我在使用GUI和HMI的工业解决方案。 该解决方案是在C++开发的,IM要求界面的HelStAR开发工具包(手势识别)与C++解决方案。 问题是Hillstar库(GestIC)和所有示例都是用C语言开发的。 我的问题是如何在我的C++解决方案中实现这些GIST库。 谢谢。 < P> C++中使用C函数没有问题。您可以编写一个包装器,它调用特定的库函数。
只需像所有其他包含一样包含带有C+的C库+;解决方案 我是C++新手,我在使用GUI和HMI的工业解决方案。 该解决方案是在C++开发的,IM要求界面的HelStAR开发工具包(手势识别)与C++解决方案。 问题是Hillstar库(GestIC)和所有示例都是用C语言开发的。 我的问题是如何在我的C++解决方案中实现这些GIST库。 谢谢。 < P> C++中使用C函数没有问题。您可以编写一个包装器,它调用特定的库函数。,c++,C++,只需像所有其他包含一样包含 #include "your library" 现在您可以使用它了。C++通过以下方式声明C函数,从而提供了调用C函数的功能: extern "C" { #include "my-C-code.h" } 你可以从C++中调用C函数,方法与C一样。这样可以防止C++中的名字会导致链接错误。这基本上是鲁尼在回顾时提出的;但不那么神秘。正如他还指出的,如果C文件已经有了这个语句,就没有必要这样做;通过预处理器,可以识别C++编译的IFIFF语句。此说明符关闭名称混乱
#include "your library"
现在您可以使用它了。C++通过以下方式声明C函数,从而提供了调用C函数的功能:
extern "C" {
#include "my-C-code.h"
}
<>你可以从C++中调用C函数,方法与C一样。这样可以防止C++中的名字会导致链接错误。这基本上是鲁尼在回顾时提出的;但不那么神秘。正如他还指出的,如果C文件已经有了这个语句,就没有必要这样做;通过预处理器,可以识别C++编译的IFIFF语句。此说明符关闭名称混乱,显然仅用于函数定义和主体(尽管它不会干扰预处理器指令)。看来大多数其他C代码都将像C++一样工作。通过这个外部文件包含的一些C标题将不编译-最显著的是那些具有保留C++关键字的函数的函数。
这里你可以找到更多的信息:从“我如何在C++代码中包含非系统C头文件?”部分。
C++代码可以调用C库-有什么问题?只是使用它。唯一需要确保的是,如果c头没有extern c
,那么您需要在文件中包含它们时添加它。欢迎使用Stack Overflow!请出示你的问题。你应该包括一个你有问题的代码,然后我们可以尝试帮助解决具体的问题。你也应该阅读。是不是需要从C++调用C的包装器?我知道你必须写一个包装器来从C调用C++,但是反过来说,它会更干净,这取决于他需要如何将他的C++解决方案与C库(取决于他想要使用的对象)联系起来。谢谢你的快速回复。但是就像我说的,C++是新的,你能解释如何写包装器并指向一些教程的方向吗?thx@OneManArmy你不需要包装纸。您可以直接进入#include
并使用类似C的调用malloc()
或free()
就可以了。人们编写代码来包围它是因为他们不喜欢C在C++代码中使用的不同风格。作为注释,如果C代码将存在作为需要连接的单独的对象代码,则需要代码>外部C < /COD>。在这种情况下,#ifdef\uucplusplus extern“C”{
保护的库(因此给出的答案是有效的)。我怀疑现在大多数C库都是这样做的。