
C
C相关开发
Hilaph
这个作者很懒,什么都没留下…
展开
-
Visual Studio 生成库、exe文件时 关于 依赖库 和 动态链接与静态链接 生成方式
DLL首先在创建工程后,会出现一个问题,是Debug还是Release,是X86还是X64,X86 和 X64的选择要和调用方所使用的位数相关,否则会出现 “试图加载格式不正确的程序”的问题。在工程的属性中,C/C++ -->运行库 总共有四种:多线程调试(/MTd)、多线程调试DLL(/MDd)、多线程(/MT)、多线程DLL(/MD)调试模式下运行库带d,但发布模式不带。调试与发布的区别在于,发布模式省略了程序的调试信息,简单来说就是删除了调试模式下的用于调试的内容,所以一般情况.原创 2020-12-25 14:34:13 · 1263 阅读 · 0 评论 -
慎用 strncpy !memcpy strcpy strncpy比较
一、函数说明1、memcpy函数void*memcpy(void *s1, const void *s2, size_t n);说明:函数memcpy从s2指向的对象中复制n个字符到s1指向的对象中。如果复制发生在两个重叠的对象中,则这种行为未定义。返回值:函数memcpy返回s1的值。2、strcpy函数char*strcpy(char *s2, const char *s1);说明:函数strcpy把s1指向的串(包括空字符)复制到s2指向的数组中。...转载 2020-10-10 11:04:32 · 405 阅读 · 0 评论 -
C 实现 授权 设定授权时间限制 AES算法
一、软件授权的思路主要分为以下步骤1、获得被授权计算机的唯一标识,例如CPU编码、硬盘编码、MAC地址等。2、将标志内容编码为不可被识别的加密数值——注册码。3、授权方将注册码解码。4、在注册码中添加时间限制以及其它携带信息并编码为不可被识别的加密数值——序列号。5、被授权电脑上获得序列号后,将其解码判断标志内容和日期是否符合,并将序列号保存以备以后启动时判断。二、这个步骤中有几个知识点:1、获取唯一标识;2、编码算法;3、将时间等信息添加入注册码中。1和3的解决办法有很多,而2原创 2020-09-25 17:48:09 · 2588 阅读 · 0 评论 -
Windows UDP recvfrom 不能阻塞 及 bind 报错的解决办法
1、正常来说,UDP的recvfrom默认是阻塞的。可以手动设置是否为阻塞u_long iMODE = 0;//1为非阻塞,0为阻塞ioctlsocket(udp_cliSocket, FIONBIO, &iMODE);//设置recvfrom是否为阻塞ioctlsocket的第一个参数为socket套接字。此处我设置为0,依然会不阻塞。2、如果bind失败了,也会导致recvfrom不阻塞。if (bind(udp_cliSocket, (SOCKADDR*)&原创 2020-07-09 18:44:15 · 3587 阅读 · 0 评论 -
windows C 调用音频输出设备 实现播放
在之前有写过一篇 使用C来调用音频输入设备录音:https://mp.youkuaiyun.com/console/editor/html/105217385本次将在调用输入设备的基础上再调用输出设备将录音内容播放出来:主要用到的函数:waveOutGetNumDevs:返回系统中的输出设备数量(可以不用)waveOutGetDevCaps:检查指定输出设备特性(可以不用)waveOutOpen:打开默认的wave设备waveOutPrepareHeader:准备一个波形数据块用于播放wav原创 2020-06-19 14:23:45 · 1675 阅读 · 4 评论 -
C C++ 调用第三方DLL库失败 LoadLibrary 返回NULL 并报 126 错误 解决办法
在之前有写关于生成dll文件以及调用dll的方法:https://blog.youkuaiyun.com/Hilaph/article/details/104917856而在vs2019新开一个项目并运行调用相关第三方dll时,出现LoadLibrary返回值判断为NULL,使用DWORD a = GetLastError();查看错误代码为126.这个报错一般都是因为找不到dll文件所导致的在网上查...原创 2020-04-13 11:53:16 · 7509 阅读 · 3 评论 -
windows C 调用音频输入设备 实现录音
所用库:#include "mmsystem.h"采集输入设备音频void RecordWave(){ //返回系统中的输入设备数量 int count = waveInGetNumDevs(); printf("\n音频输入数量:%d\n", count); //检查指定输入设备特性 参数:输入设备标识/句柄;结构体指针;结构体大小 WAVEINCAPS waveI...原创 2020-03-31 10:51:02 · 1773 阅读 · 0 评论 -
Visual studio 使用C语言 生成DLL 文件 并用 C 调用DLL
生成DLL:新建项目-C++-动态链接库(DLL)项目-右键-属性-C/C++预编译头:不使用预编译头。添加相应的.h和.c文件在.h中,对外开放的接口前 加注__declspec(dllexport)调用DLL:将.dll 和 .lib放在与Debug同级目录项目右键-属性-VC++目录-库目录-将.dll和.lib所在文件夹目录写入库目录中...原创 2020-03-17 12:08:34 · 8511 阅读 · 0 评论 -
Windows C 回调函数的应用
在开发制作SDK时,由于需要不定时的上发一些数据给第三方调用SDK的用户,所以需要用到回调函数来实现。//定义 信号量句柄、全局指针、信号量触发线程HANDLE h_ThreadSem = NULL;unsigned charbuf[100];DWORD WINAPI RevThreadFun(LPVOID);//回调函数void printbuf(unsigned char...原创 2020-03-16 15:59:09 · 265 阅读 · 0 评论 -
C 复制 连接字符串
原文:https://developers.redhat.com/blog/2019/08/12/efficient-string-copying-and-concatenation-in-c/以下为优快云官方译文:在所有标准C语言<string.h>头文件中声明的字符串处理函数中,最常用的是那些用来复制和连接字符串的函数。这两组函数都将字符从一个对象复制到另一个对象,并且都...转载 2019-10-10 10:15:20 · 219 阅读 · 0 评论 -
嵌入式 C 面试 考点
1.const的作用是什么?第一,限定一个只读变量(不是常量)。如const double PI=3.14;第二,限定函数参数,如,void function(const char *p)//函数只能读取不能改变其变量p的值2.关键字volatile有什么含意?volatile影响编译器编译的结果,指出,volatile变量是随时可能发生变化的,与volatile变量有关的运算,不要进...转载 2019-10-30 11:26:16 · 608 阅读 · 0 评论 -
Windows C语言 实现线程同步 互斥量 信号量 及两种的区别
互斥量与信号量实现方法类似:互斥量: HANDLE hMutex = NULL;//在全局中定义一个句柄 hMutex = CreateMutex(NULL,FALSE,NULL); //建立互斥量 if (WaitForSingleObject(hMutex, INFINITE) == WAIT...原创 2020-03-16 10:34:39 · 1653 阅读 · 0 评论