![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c
文章平均质量分 86
C相关开发总结
昵称系统有问题
知识成就梦想。
展开
-
Windows下使用AndroidStudio及CMake编译Android可执行程序或静态库动态库
之前在Android Studio中编写NDK C/C++相关代码,通过Gradle和CMake编译成动态库,然后再利用JNI的方式进行调用。现在需要编译Android C/C++可执行程序,通过运行程序做一些小实验,而这些小实验都是纯C/C++编写,不包含任何Java代码,那么是否可以利用现成的环境进行开发呢?原创 2023-12-05 20:01:23 · 1655 阅读 · 0 评论 -
C调用Objective-C的类和方法
最近有一个C提供回调接口调用Objective-c接口来传递数据的需求,研究了很久,最终通过bing的AI对话查到了需要的内容,这里记录一下,算是给基于C的IOS开发开了一个头。在Objective-C中,你可以创建一个全局的类方法,并在C语言中通过Objective-C运行时(Runtime)id为对象类型,int、double、long等类型也支持,字符串等类型也需要通过id对象来调用。另外,Objective-C的代码可以直接调用C的函数,直接引入C的头文件,不需要额外改动。原创 2023-10-17 21:00:00 · 1564 阅读 · 0 评论 -
CLion远程Linux开发环境搭建及找不到Linux头文件的解决方法
在某些时候我们的交叉编译环境已经部署在服务器上,本地资源不足,编译环境就算搭建起来也编译比较慢,这种情况下我们仍可以在CLion上配置远程开发并添加一键编译和调试功能,此外,大多数情况下我们都是在Windows下开发Linux下的程序,因此Windows下的CLion配置关联Linux虚拟机或Linux编译机器进行编译调试是很有必要的。如果程序在远程服务器直接运行的话则可以直接远程gdb调试,如果程序还要部署在设备上调试的话则单独配置远程gdb在编译完成之后。原创 2023-09-04 18:38:49 · 1495 阅读 · 0 评论 -
CLion常用插件及c文件模板配置
其实我们还可以将这些模版开发成插件上传到插件市场(Java就可以开发),这些留给以后折腾吧,感兴趣的可以自行先研究一下。原创 2022-10-01 11:18:52 · 8063 阅读 · 1 评论 -
cgo+gSoap+onvif学习总结:9、go和c进行socket通信进行onvif协议处理
cgo目前看仍然存在一些问题,虽然我在amd64和x86上使用正常了,1.18版本没有出现内存分割违例问题,但是arm64上运行时仍存在分割违例问题,所以打算使用一个比较稳妥的方式进行c和go的通信,那就是socket通信。至于c++方式实现的话可以使用grpc+pb的方式来和go通信,或者数据复杂一些也可以使用mongos和nanomsg来进行,这些可以留着扩展研究,由兴趣的可以尝试一下,这些处理方式比起原始的socket虽然更复杂但更具扩展性,可以结合项目实际使用情况来定。我这里由于是c代码,grpc方原创 2022-07-04 09:53:26 · 897 阅读 · 0 评论 -
cgo+gSoap+onvif学习总结:8、arm平台交叉编译运行及常见问题总结
此前我们都是将相关cgo程序代码在Windows上运行的,所以基本是x86或者amd64,在wsl上编译c或者go都是比较简单容易的,没有太大的问题,但是当我们需要将cgo程序应用于arm平台时(不管是Android、openwrt、纯linux或者现在的macOS很多都使用arm架构芯片了),就需要关注到交叉编译的问题,所以这里以arm-openwrt为例,总结使用gSoap的cgo程序如何在交叉编译之后正常运行于arm平台,一些常见问题我们是如何解决的,这对于使用gSoap+cgo框架的onvif协议程原创 2022-06-24 16:13:22 · 689 阅读 · 0 评论 -
go+gSoap+onvif学习总结:7、进行镜头调焦、聚焦和预置点的增删改查
cgo+gSoap+onvif学习总结:7、进行镜头调焦、聚焦和预置点的增删改查文章目录cgo+gSoap+onvif学习总结:7、进行镜头调焦、聚焦和预置点的增删改查1. 前言2. gSoap生成c代码框架3. 完成c代码实例并测试3.1 c代码3.2 cmake3.3 结果展示4. 完成cgo代码示例并测试4.1 cgo代码及编译4.4 结果展示5. 整体项目结构6. 最后1. 前言镜头调焦和聚焦之前我们说过,一个使用的ptz能力,一个使用的imaging能力,而预置点使用的还是使用的ptz能力原创 2022-03-15 08:52:51 · 6444 阅读 · 9 评论 -
cgo+gSoap+onvif学习总结:6、进行PTZ控制
cgo+gSoap+onvif学习总结:6、进行PTZ控制文章目录cgo+gSoap+onvif学习总结:6、进行PTZ控制1. 前言2. gSoap生成c代码框架3. 实现c代码实例并运行3.1 c代码3.2 cmake3.3 运行结果4. 实现cgo代码示例并运行4.1 相关代码4.2 cmake4.3 运行结果5. 整体项目结构6. 最后1. 前言接下来我们进行简单的ptz控制,进行一些基础的上、下、左、右、左上、左下、右上、右下、停止等的控制,ptz的模式我们仍使用连续移动方式,对于ptz的原创 2022-03-14 08:48:24 · 1421 阅读 · 4 评论 -
cgo+gSoap+onvif学习总结:5、获取profileToken、rtsp流地址、快照地址及cgo程序signal SIGSEGV: segmentation violation解决方法
cgo+gSoap+onvif学习总结:5、获取profileToken、rtsp流地址、快照地址及cgo偶发signal SIGSEGV: segmentation violation分割违例解决方法文章目录cgo+gSoap+onvif学习总结:5、获取profileToken、rtsp流地址、快照地址及cgo偶发signal SIGSEGV: segmentation violation分割违例解决方法1. 前言2. gSoap生成c/c++代码框架3. 实现c代码并运行测试3.1 c代码3.2原创 2022-03-10 18:04:17 · 5374 阅读 · 2 评论 -
cgo+gSoap+onvif学习总结:4、实现设备鉴权并获取设备信息
cgo+gSoap+onvif学习总结:4、实现设备鉴权并获取设备信息文章目录cgo+gSoap+onvif学习总结:4、实现设备鉴权并获取设备信息1. 前言2. gSoap生成满足鉴权和获取设备信息的c代码框架2.1 生成c框架代码2.2 可能的错误及解决方法2.2.1 问题1:wsa5.h报错2.2.2 问题2:soap_serialize_xsd__dateTime等未定义2.2.3 问题3:duration.c编译报错3. 实现c代码实例并测试运行3.1 c代码如下3.2 注意事项3.3 cma原创 2022-03-09 18:01:13 · 1805 阅读 · 2 评论 -
cgo+gSoap+onvif学习总结:3、使用gSoap生成onvif协议代码实现设备搜索并使用cgo进行交互
cgo+gSoap+onvif学习总结:3、使用gSoap生成onvif协议代码实现设备搜索并使用cgo进行交互文章目录cgo+gSoap+onvif学习总结:3、使用gSoap生成onvif协议代码实现设备搜索并使用cgo进行交互1. 前言2. gSoap生成c/c++代码框架2.1 准备相关文件2.2 创建项目并生成头文件和源文件2.3 生成设备发现客户端C代码实例及测试2.3.1 资料阅读2.3.2 生成服务发现客户端C代码框架3. 实现c代码实例并运行测试3.1 c代码3.2 项目结构3.3 C原创 2022-03-08 18:09:31 · 609 阅读 · 0 评论 -
C语言16进制字符串转字节字节数组
C语言16进制字符串转字节字节数组文章目录C语言16进制字符串转字节字节数组简述:问题:简述:我们知道1字节占8bit; 0000000 ~ 11111111以char形式表示就是 -128 ~ 127; 至于为什么回头再补充!!!以byte表示的话就是 0 ~ 255 等同于unsigned char因为C语言本身没有byte类型以十六进制表示的话就是 0x00 ~ 0xFF问题:有时候我们会有这样的需求, 给你一串字符, 但是要以16进制的方式使用, 这时候就需要将两字节放到一字节转载 2021-10-22 17:44:47 · 1929 阅读 · 1 评论 -
C语言系列:8、Unix系统接口--文件操作
C语言系列:8、Unix系统接口–文件操作文章目录C语言系列:8、Unix系统接口--文件操作1. 文件描述符2. 低级IO--read/write3. open、creat、close和unlink4. 随机访问--lseek5. 实例--fopen和getc函数的实现6. 实例--目录列表7. 实例--存储分配程序8. 最后UNIX 操作系统通过一系列的系统调用提供服务,这些系统调用实际上是操作系统内的函数,它们可以被用户程序调用。本章将介绍如何在C 语言程序中使用一些重要的系统调用。如果读者使用原创 2021-08-03 18:13:30 · 654 阅读 · 2 评论 -
C语言系列:7、输入与输出
C语言系列:7、输入与输出文章目录C语言系列:7、输入与输出1. 标准输入/输出1.1 标准输入1.2 标准输出1.3 printf1.4 示例2. 格式化输出--printf函数3. 变长参数表4. 格式化输入--scanf函数5. 文件访问6. 错误处理--stderr和exit7. 行输入和行输出--fgets和fputs8. 其它函数8.1. 字符串操作函数8.2. 字符类别测试和转换函数8.3. ungetc函数8.4. 命令执行函数8.5. 存储管理函数8.6. 数学函数8.7. 随机数发生原创 2021-08-02 18:05:52 · 543 阅读 · 5 评论 -
C语言系列:6、结构
C语言系列:6、结构文章目录C语言系列:6、结构1. 结构的基本知识2. 结构和函数3. 结构数组4. 指向结构的指针5. 自引用结构6. 表查找7. 类型定义8. 联合9. 位字段结构是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个名字之下。(某些语言将结构称为“记录”,比如Pascal语言。)由于结构将一组相关的变量看作一个单元而不是各自独立的实体,因此结构有助于组织复杂的数据,特别是在大型的程序中。工资记录是用来描述结构的一个传统例子。每个雇员由一组属性描原创 2021-07-30 17:59:29 · 608 阅读 · 2 评论 -
C语言系列:5、指针与数组
C语言系列:5、指针与数组文章目录C语言系列:5、指针与数组1. 指针和地址2. 指针与函数参数3. 指针与数组4. 地址算术运算5. 字符指针与函数6. 指针数组以及指向指针的指针7. 多维数组8. 指针数组的初始化9. 指针与多维数组10. 命令行参数11. 指向函数的指针12. 复杂声明指针是一种保存变量地址的变量。在C 语言中,指针的使用非常广泛,原因之一是,指针常常是表达某个计算的惟一途径,另一个原因是,同其它方法比较起来,使用指针通常可以生成更高效、更紧凑的代码。指针与数组之间的关系十分密原创 2021-07-28 18:07:19 · 947 阅读 · 10 评论 -
C语言系列:4、函数与程序结构
C语言系列:4、函数与程序结构文章目录C语言系列:4、函数与程序结构1. 函数的基础知识2. 返回非整型值的函数3. 外部变量4. 作用域规则5. 头文件6. 静态变量6.1 修饰外部变量6.2 修饰函数6.3 修饰内部变量7. 寄存器变量8. 程序块结构9. 初始化10. 递归11. C预处理器11.1 文件包含11.2 宏替换11.3 条件包含1. 函数的基础知识首先我们来设计并编写一个程序,它将输入中包含特定“模式”或字符串的各行打印出来(这是UNIX 程序grep的特例)例如,在下列一组文本原创 2021-07-23 18:03:54 · 341 阅读 · 2 评论 -
C语言系列:3、流程控制
C语言系列:3、流程控制文章目录C语言系列:3、流程控制1. 语句与程序块2. if-else语句3. else-if语句4. switch语句5. while循环与for循环6. do-while循环7. break语句与continue语句8. goto语句与标号1. 语句与程序块在 x = 0、i++或printf(…)这样的表达式之后加上一个分号(;),它们就变成了语句。例如:x = 0;i++;printf(...);在C语言中,分号是语句结束符,而Pascal 等语言却把分号原创 2021-07-20 18:02:41 · 247 阅读 · 2 评论 -
C语言系列:2、数据类型、运算符和表达式
C语言系列:2、数据类型、运算符和表达式文章目录C语言系列:2、数据类型、运算符和表达式1. 前言2. 变量名3. 数据类型和长度3.1 基本数据类型3.2 short和long限定符3.3 signed 与unsigned限定符4. 常量4.1 整型常量和浮点型常量4.2 八进制和十六进制表示4.3 字符常量4.4 转义字符4.5 常量表达式4.6 字符串常量4.7 枚举常量5. 声明5.1 变量声明5.2 初始化5.3 const限定符6. 算术运算符7. 关系运算符和逻辑运算符7.1 关系运算符7原创 2021-07-20 18:01:49 · 459 阅读 · 6 评论 -
C语言系列:1、搭建开发环境(安装CLion)及HelloWorld
C语言系列:1、搭建开发环境(安装CLion)及HelloWorld文章目录C语言系列:1、搭建开发环境(安装CLion)及HelloWorld1. 前言2. 下载安装CLion3. 创建项目以及HelloWorld4. 最后1. 前言总结完Bash之后我们来总结C相关的内容,下面我们不再使用微软的VS,而是使用CLion,这个软件和Java的IDEA是一个软件厂商开发的,相对于VS来说是多平台可用的(但是是收费的,大家自行处理一下,网上方法比较多),而且比较好用,c/c++/Qt/Stm32开发都原创 2021-07-14 18:14:58 · 1100 阅读 · 16 评论 -
Linux C根据进程特征名称确认进程是否存在
Linux C根据进程特征名称确认进程是否存在不同系统可能存在一定差异,但主要思路是通过执行命令行指令ps命令查看进程信息进行判断。如下代码:int detectProcessByName(char * processName){ FILE* fp = NULL; int count = 1; int BUFSZ = 100; char buf[BUFSZ]; char command[150]; if(snprintf(command, 150,原创 2020-12-07 15:00:03 · 1449 阅读 · 0 评论 -
约瑟夫问题
约瑟夫问题 约瑟夫问题一般有两种解决方法,一种数组,一种链表,本次采用数组方式说明解决。规则:n个人围成一个圈,每个人分别标注为1、2、...、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人...原创 2017-07-18 21:18:24 · 544 阅读 · 0 评论 -
几个简单的system(const char* _Command)函数命令
几个简单的system(const char* _Command)函数命令呼出终端:Windows键+r,然后输入cmd。system(const char* _Command)函数常用命令如:system(“cls”);1.shutdown常用命令:在终端上用 shutdown/? 命令查看。 2.cls清屏 3.color:控制台改颜色 附:原创 2017-07-18 21:50:46 · 3350 阅读 · 0 评论 -
二进制简单计算
二进制简单计算1.24-35=值?用二进制补码方式进行计算24的补码:00011000-35的原码:10100011-35的反码:11011100-35的补码:1101110124-35的值: 00011000+11011101 11110101转换为反码: 11110100转换为原码: 10001011转换为10进制:-112.21&(13|(-1...原创 2017-07-18 21:23:39 · 977 阅读 · 0 评论 -
C语言三目运算嵌套求三个数最大值及顺序选择结构
三目运算嵌套求三个数最大值及顺序选择结构1.用三目运算符嵌套实现三个数求最大值:a>b?(a>c?a:c):(b>c?b:c)2.用户输入一个年份,判断是否为闰年,年份必须是四位以内的。分析:用户输入年份,然后对1000求商,根据结果判断是否为四位以内的数,然后再根据闰年的规定标准判断是否为闰年即可。(可以循环判断循环输入,但是由于课程暂未涉及,本次仅进行一次判断,错...原创 2017-07-19 22:15:28 · 4616 阅读 · 0 评论 -
ASCII与C简单数据类型
ascII与简单数据类型1. 打印出所有ascII表中的字符思路:ascII码值与阿拉伯数字0-127对应,故可以先将其以数字形式存在数组空间或内存空间中,然后用%c一个一个打印出来即可,本次采用数组进行存储。代码: #include<stdio.h> int main(int argc, char* argv[]){ int buf[128] = {...原创 2017-07-18 21:27:01 · 2105 阅读 · 0 评论