集成C和C 程序
integrate a C and C++ program
我正在尝试使用图像处理来控制无人机。来自无人机的图像捕获是一个OPENCV C 程序。无人机控制程序是C程序。现在,我想集成两个程序,以便我运行一个程序,可以通过该程序获得图像并控制无人机。我怎么做?我的C程序是一个套接字程序,可将命令发送到无人机和C 程序,以从TCP套接字从无人机捕获图像流。有什么办法可以做到这一点,还是我应该将一个整个程序转换为另一种语言?任何人帮助。
问候,Shiksha
您有许多选项。最简单的可能是简单地将*.c
文件命名为*.cpp
-它们可以直接在C 中编译。然后,您可能会遇到一些与使用C编译器构建的外部库有关的问题。这些链接问题通常可以通过守卫每个标头包含
extern "C" {
#include "header_for_c_library.h"
}
如果这是不可行的(例如,如果您的C项目由很多文件组成,或者您想在C中进行编译),则可能需要将C部分构建为静态库,并将其与C 链接程序。您可以朝另一个方向前进 - 将C 组件构建为静态库,并将其与C程序链接。不利的一面是,您必须为C 代码编写一个C包装器,这可能需要一些努力(或者是不可能的,具体取决于您在API中使用的C 功能)。必须注意确保包装器链接为C
在C 程序中使用C libs是重复使用该功能的常见方法。这些语言可以一起构建。通常C 代码调用C-模块API,提供所需的功能。
在这种情况下,您可以将C文件添加到C 项目中并构建一个可执行文件。
您仅应考虑C和C 中的不同链接。C功能声明应使用extern "C"
标准链接规范编译。C -Libraries通常已经在标题中具有这样的代码(如果不是 - 添加):
#ifdef __cplusplus
extern "C" {
#endif
,在文件末尾
#ifdef __cplusplus
}
#endif
extern" c"防止C 编译器更改功能名称。当C 支持过载时,C 编译器将有关功能参数的信息添加到函数名称中,即称为Mangling。这不应针对C-Library代码进行。
- 将 Crashpad 与 Windows Qt 应用程序集成
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 使用C 单元测试框架集成测试Java应用程序
- 如何在WinAPI应用程序中集成OpenGL和GLU?
- 编写蒙特卡洛集成程序,我不知道为什么我会收到某些错误
- 集成在不同VS版本中开发的应用程序
- 如何在没有窗口类的情况下编写QT系统托盘应用程序,并将其与另一个进程集成
- 使用Visual Studio 2015社区版为应用程序制作安装程序,其中集成了VC++ 2015环境
- RabbitMQ vs NodeJS 插件,用于C++应用程序集成
- 将条纹集成到QT移动应用程序中
- 集成C和C 程序
- 将 .NET C# 程序集成到已编译(非托管)C++程序中(无需执行单独的.exe文件)
- 如何在Windows Phone 8 C /CLI应用程序中集成DLMALLOC
- 将现有程序集成到新的 GUI 中
- 将一个用 C 编写的程序与另一个用 C++ 编写的程序集成
- 将我的应用程序与黑莓10中的呼叫日志核心应用程序集成
- 如何将新的Qt窗口与现有的X应用程序集成
- 如何将c++应用程序集成到PHP网站中
- Java 应用程序和C++应用程序集成/通信
- 将谷歌地图与C++程序集成