C++
文章平均质量分 53
Lay_Nobody
这个作者很懒,什么都没留下…
展开
-
Linux C++代码打印堆栈
【代码】Linux C++代码打印堆栈。原创 2023-05-17 11:43:03 · 620 阅读 · 0 评论 -
JNI基于C++的Java方法签名生成器
JNI自动生成Java方法签名原创 2023-03-01 13:57:10 · 310 阅读 · 0 评论 -
ABI 介绍
ABI(Application Binary Interface)原创 2023-01-31 15:19:18 · 152 阅读 · 0 评论 -
Linux 动态库 (.so) soname 介绍
Linux 动态库 realname, soname, linkname原创 2023-01-31 15:00:27 · 439 阅读 · 0 评论 -
gcc -l 选项
根据-llibrary-l library在使用-l选项时,有以下几点需要注意:-labc-l abd-L-static。原创 2022-12-19 11:50:51 · 158 阅读 · 0 评论 -
gcc, clang and llvm
gcc, clang and llvm原创 2022-11-10 11:53:07 · 140 阅读 · 0 评论 -
Visual Studio 给线程命名
VisualStudio给线程命名。原创 2022-07-21 15:55:46 · 228 阅读 · 0 评论 -
编译第三方库提示typedef重复定义
我看不懂,但我真的好震撼。。。引自:[轻笔记]多个第三方库typedef重定义冲突问题描述工程依赖opencv与课题组项目的一个库,编译时出现以下错误:大概意思是,两个库里都用typedef定义了int64,发生冲突。无解之下请教了课题组的c++小王子——建哥。不一会,建哥发我一个链接:Typedef redefinition (C2371) for uint32 in two 3rd-party libraries。问题本质是一样的。所以,照猫画虎,在冲突的库头文件前后分别加下如下内容,问转载 2022-05-07 10:09:35 · 1167 阅读 · 0 评论 -
CoInitializeEx返回 “0x80010106“ 或者 “RPC_E_CHANGED_MODE“
文章目录错误截图问题分析及定位解决方法错误截图其中 ScopedCOMInitializer 实现如下:class ScopedCOMInitializer { public: enum SelectMTA { kMTA }; ScopedCOMInitializer() { Initialize(COINIT_APARTMENTTHREADED); } explicit ScopedCOMInitializer(SelectMTA mta) { Initialize(原创 2022-03-11 19:21:12 · 2599 阅读 · 0 评论 -
webrtc 日志输出
引用:webrtc native log 写入文件原创 2022-02-21 18:06:27 · 541 阅读 · 0 评论 -
windows c++ 播放wav文件
文章目录PlaySoundwaveOut* 函数族Core Audio APIs 播放pcmPlaySound官方文档:The PlaySound Function官方示例:Using PlaySound to Play Waveform-Audio FileswaveOut* 函数族官方文档:mmeapi.h header官方示例:Example of Writing Waveform Data注:waveOutWrite 是一个异步方法,为了确保调用闭环,建议在调用waveOutC原创 2021-12-14 15:33:12 · 3212 阅读 · 0 评论 -
wave文件头解析
文章目录概述格式解析格式详解代码字节序概述Waveform Audio File Format(WAVE,又或者是因为扩展名而被大众所知的WAV),是微软与IBM公司所开发在个人电脑存储音频流的编码格式,在Windows平台的应用软件受到广泛的支持,地位上类似于麦金塔电脑里的AIFF。[2] 此格式属于资源交换文件格式(RIFF)的应用之一,通常会将采用脉冲编码调制的音频资存储在区块中。也是其音乐发烧友中常用的指定规格之一。由于此音频格式未经过压缩,所以在音质方面不会出现失真的情况,但文件的体积因而在原创 2021-12-13 16:04:01 · 640 阅读 · 0 评论 -
windows采集扬声器声音
文章目录背景采集扬声器demo代码踩坑记录混音背景最新接到了新需求:采集Windows扬声器的声音混音,混音源为扬声器和麦克风。采集扬声器demo代码#include <combaseapi.h>#include <mmdeviceapi.h>#include <audioclient.h>#include <iostream>#include <fstream>#include <thread>#in原创 2021-12-09 10:33:06 · 1541 阅读 · 1 评论 -
windows编译 zlib
文章目录编译准备编译过程方法一:zlib自带解决方案方法二:cmake编译问题编译准备zlib相关链接如下:官网主页某一个源码编译过程方法一:zlib自带解决方案解压源码后,在如下路径中选择符合自己vs版本的文件夹文件夹内包含vs解决方案。方法二:cmake解压源码,根目录如下:基于cmake完成跨平台构建。编译问题暂无。...原创 2021-11-10 14:30:26 · 897 阅读 · 5 评论 -
visual studio源文件默认utf-8编码
语法/utf-8备注可以使用 选项将源字符集和执行 /utf-8 字符集指定为使用 编码 UTF-8 的 。 这等效于在命令行 /source-charset:utf-8 /execution-charset:utf-8 上指定 。 默认情况下,这些选项中任何一 /validate-charset 个也会启用 选项。 有关支持的代码页标识符和字符集名称的列表,请参阅 代码页标识符。默认情况下,Visual Studio字节顺序标记,以确定源文件是否采用编码的 Unicode 格式,例如 UTF-16转载 2021-09-07 19:56:52 · 3463 阅读 · 0 评论 -
openssl源码编译
文章目录源码下载编译Windows(参考NOTES-WINDOWS.md)Linux源码下载git clone git@github.com:openssl/openssl.git编译Windows(参考NOTES-WINDOWS.md)安装 perl我安装了 Strawberry Perl,由于官网服务器在海外,下载较慢,此处提供百度网盘链接提取码:mv58(吐槽一句,CSDN资源真ex)。安装 NASM, NASM 的下载安装很快。系统环境变量PATH中添加 na原创 2021-08-06 16:10:15 · 606 阅读 · 0 评论 -
构造函数调用场景
代码#include <iostream>using namespace std;static int g_int = 0;class MyClass{public: MyClass() { a = g_int++; std::cout << "Default constructor: " << a << std::endl; } MyClass(const MyClass& c) { a = g_int++;原创 2021-07-27 20:17:56 · 166 阅读 · 0 评论 -
2021-04-29
转自:visual studio 配置属性中增加自定义宏和宏值visual studio中配置自己的宏。下面是vs中的宏,SolutionDir这个是工程所在目录文件夹。如何创建自己的宏呢视图->其他窗口->属性管理器,跳转到属性管理器界面。然后选择一个工程,右键出现下图所示点击添加新项目属性表,给属性表命名一个名字(prop)然后双击prop出现此图界面点击用户宏,就可以添加自己想要的宏了。可以勾选 将次宏设置为生成环境中的环境变量选项,这样就可以,项目在其他电脑上转载 2021-04-29 10:05:45 · 74 阅读 · 0 评论 -
C/C++-左值、右值及引用
目录1.左值and右值2.引用3.左值引用的用途4.std::move和std::swapC和C++中定义了引用类型(reference type),存在左值引用(lvalue reference)。而在C++11中,新增了右值引用(rvalue reference)这一概念, 虽然个人感觉右值引用用处不大,但在此一并讨论。1.左值and右值首先,我们讨论左值和右值两个概念。左值(lvalue):一个标识非临时性对象的表达式。通常来说,可以将程序中所有带名字的变量看做左值。右值(rvalue.转载 2021-03-04 11:40:34 · 219 阅读 · 1 评论 -
IAudioClient::Initialize返回-2147024891(E_ACCESSDENIED)的解决方法
文章目录现象解决过程现象应用跑不起来,分析dump、日志发现IAudioClient::Initialize返回-2147024891,参照General Audio Error Codes,确认该接口访问受限。其他电脑运行正常。所有主机均为Windows10操作系统。解决过程应用对音频的处理调用了Core Audio APIs,Core Audio APIs自Windows Vista之后支持,所以不存在系统小版本间差异导致产生bug的可能。该bug仅在一台特定主机上复现,不排除硬件问原创 2021-02-22 17:23:15 · 961 阅读 · 0 评论 -
string与hex相互转化(C++)
#include <iostream>#include <stream>#include <sstream>std::string StringToHex(const std::string& data){ const std::string hex = "0123456789ABCDEF"; std::stringstream ss; for (std::string::size_type i = 0; i < dat转载 2020-11-07 17:33:52 · 6039 阅读 · 0 评论 -
‘JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8:
现象特征偶现且频率极低。危害性较大,应用直接崩溃。问题定位以博文题目作为关键字搜索,有大把的分析(如:https://blog.csdn.net/liuzehn/article/details/89852076),不再赘述。几乎我看到的所有文章全部指出该问题的根据在于:Java虚拟机内部的dalvik/vm/CheckJni.c中的checkUtfString函数抛出。我没有找到源码路径有 dalvik/vm/,最后在 art/runtime/jni/check_jni.cc 找到该方法调用原创 2020-11-07 17:31:05 · 841 阅读 · 0 评论 -
Build ffmepg on Ubuntu
ReferCompile FFmpeg for Ubuntu, Debian, or MintNoteERROR: vorbis not found using pkg-config,如下图红框部分:蓝框内为 ./ffbuild/config.log 内容,详细记录了构建输出,根据提示解决相应问题。原创 2020-11-04 09:52:27 · 187 阅读 · 0 评论 -
std::map 自定义key类型,重写operator<() 没有严格弱序引起的“invalid comparator”
文章目录现象问题分析严格弱序三要求测试demo现象生产环境中偶发崩溃,调试时弹出以下弹窗:定位问题为 map自定义key类型重写operator<() 没有严格弱序引起。问题分析严格弱序三要求参考自: C++ 严格弱序两个关键字不能同时“严格弱序”于对方如果a“严格弱序”于b,且b“严格弱序”于c,则a必须“严格弱序”于c如果存在两个关键字,任何一个都不“严格弱序”于另一个,则这两个关键字是相等的。测试demo根据业务代码bug输出demo如下:#include <原创 2020-10-12 20:31:55 · 935 阅读 · 1 评论 -
VS 2017 命令行编译 sln
文章目录工具编译release x64(默认)debug x64debug win32工具用到的命令行工具是devenv.com,帮助手册如下:admin@Host C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE [16:27]❯原创 2020-09-21 16:33:39 · 8041 阅读 · 0 评论 -
Error no matching function for call to ‘std::exception::exception(const char [21])
源码在vs上编译通过,在Ubuntu下编译提示:Error no matching function for call to 'std::exception::exception(const char [21]),源码如下:#include <iostream>#include <exception>using namespace std;int main(){ try { throw exception("linux exception test"); }原创 2020-08-12 15:03:37 · 2329 阅读 · 1 评论 -
查看C++ 预定义宏
gccgcc -dM -E - < /dev/nullclangclang -dM -E -x c /dev/null原创 2020-07-31 10:46:02 · 459 阅读 · 0 评论 -
linux, windows, mac, ios等平台GCC预编译宏判断
转自:linux, windows, mac, ios等平台GCC预编译宏判断写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码。而跨平台c/c++编程,GCC基本在各平台都可以使用。整理了一份各平台预编译宏的判断示例。需要注意几点:* windows32/64平台_WIN32都会被定义,而_WIN64只在64位windows上定义,因此要先判断_WIN64* 所有的apple系统都会定义 __APPLE__,包括MacOSX和iOS* TARGET_IPHONE_SIMU转载 2020-05-27 10:02:05 · 954 阅读 · 0 评论 -
屏蔽vs 4996错误
参考自:如何屏蔽VS2013中的4996错误!代码开头添加:#pragma warning(disable:4996)原创 2020-05-07 10:05:02 · 662 阅读 · 0 评论 -
openssl aes api 记录 [一]
测试代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <openssl/evp.h>#include <openssl/aes.h>int main(void){ unsigne...原创 2019-03-19 19:29:05 · 470 阅读 · 0 评论 -
undefined reference to `cv::imwrite` || undefined reference to `cv::imread` 解决
解决方法在最下面,或者点here先写一下现象:现象接手代码,cmake .. && make -j123,一气呵成,然后报错如下:说实在的,这种问题,没有一百也有八十了,找不到库嘛,气定神闲的打开CMakeLists.txt,target_link_libraries(test${LIBS_DIR}/lib/lib64/libopencv_core.so.3.4...原创 2019-03-30 16:28:38 · 13548 阅读 · 2 评论 -
C++ 泛型编程 or 模板
找到这么一个很棒的tutorial:中文的C++ Template的教学指南转载 2019-02-21 15:55:32 · 189 阅读 · 0 评论 -
QT实现http post请求发生内存泄漏
Show code first: QByteArray ba = getData(); //自己的方法,用于获取数据 QNetworkAccessManager* manager = new QNetworkAccessManager; QNetworkRequest request; request.setHeader(QNetworkRequest::ContentTypeHea...原创 2019-01-14 12:03:47 · 1952 阅读 · 3 评论 -
QT pro文件CONFIG 参数
CONFIG 变量 配置变量指定了编译器所要使用的选项和所需要被连接的库。配置变量中可以添加任何东西, 但只有下面这些选项可以被qmake识别编译器类型: release : 应用程序将以release模式连编。如果“debug”被指定,它将被忽略 debug: 应用程序将以debug模式连编。 warn_on: 编译器尽可能多得输出警告信息,如果“warn_off”被指定,它将被忽...转载 2018-04-11 10:04:49 · 11070 阅读 · 0 评论 -
cmake/makefile 获取git版本信息并传入源码输出
Show code first:CMakeLists.txtcmake_minimum_required(VERSION 2.8)project(test)set(SRCS main.cpp)# 执行git命令,并把结果重定向到自定义变量(此处是我的变量<GIT_VERSION>)。execute_process( COMMAND git log -1 --form...原创 2019-04-09 11:06:11 · 4669 阅读 · 0 评论 -
cmake 编译 Qt项目+消除控制台
让我引一下流 0.0Here原创 2019-04-12 15:19:11 · 2165 阅读 · 2 评论 -
openssl aes api 记录 [二] - windows 下使用openssl问题记录
环境:Windows10工具:vs2015 + cmake3.1依赖:openssl-1.1.0问题1(x509与Windows冲突)现象描述:图一:这是报错的地方,该文件为 openssl/x509.h图二:F12可以看到, X509_NAME 指向了windows的头文件定义。解决方法:在CMakeLists.txt中添加宏 NOCRYPT,如...原创 2019-04-09 21:51:03 · 877 阅读 · 2 评论 -
cmake 生成动态库、静态库详细讲解
HelloWorld CMake CMake中构建静态库与动态库及其使用转载 2019-05-22 11:31:46 · 14356 阅读 · 0 评论 -
Linux clock 测量 sleep 的时间
在实际使用过程中发现了关于sleep() 与 clock() 的两个潜在坑,记录如下clock() 返回cpu占用时间,而调用 sleep() 休眠时并不会占用CPU时间。clock() 中 CLOCKS_PER_SEC 在Linux下为 1,000,000 , 而在Windows 下为 1000。测试过程如下:先准备代码:#include <time.h>#incl...原创 2019-07-06 15:23:46 · 947 阅读 · 1 评论 -
Linux 监测键盘输入
引自:linux下C实现对键盘事件的监听(按下键盘的时候程序立刻读取) 本文链接:https://blog.csdn...转载 2019-09-09 14:32:47 · 2429 阅读 · 0 评论