最近遇到一个崩溃问题,崩溃在CRT中,最后调用的函数是_invoke_watson.调用关系大概如下: _invoke_watson _invalid_parameter _invalid_parameter_noinfo_noreturn memcpy_s 虽然看的出来这个是memcpy参数不对导致的崩溃,但是这几个之前没见过的函数成功吸引了我的注意! 这一系列的函数用在windows CRT中处理函数的无效传参._invalid_parameter的函数原型如下: extern "C&quo…
尝试ubuntu和win下mingw编译版本,但都在Vistual Studio链接时因为依赖 libgcc.a, libmingw.a, libmingwex.a 会与mscrt 有符号冲突. 最后都是用msvc 来编译就搞定了 1. x264 按照官方文档说明: The following example command will configure libx264: CC=cl ./configure --enable-static --prefix=<PREFIX> --extra-c…
glibc与MSVC CRT 运行库是平台相关的,因为它与操作系统结合得非常紧密.C语言的运行库从某种程度上来讲是C语言的程序和不同操作系统平台之间的抽象层,它将不同的操作系统API抽象成相同的库函数.比如我们可以在不同的操作系统平台下使用fread来读取文件,而事实上fread在不同的操作系统平台下的实现是不同的,但作为运行库的使用者我们不需要关心这一点.虽然各个平台下的C语言运行库提供了很多功能,但很多时候它们毕竟有限,比如用户的权限控制.操作系统线程创建等都不是属于标准的C语言运行库.于是…
晚上用cmake生成了一份lua-cjson的工程文件,msvc6的 编译时报错 后来再stackoverflow找到答案:unable to use inline in declaration get error C2054 解决方法: Use __inline with MSVC. inline is a c99 keyword and c99 is not yet (fully) supported with MSVC. "The inline keyword is available o…
详细请参考这篇博文 http://blog.csdn.net/dbzhang800/article/details/7540905 运行字符编码就是指,当你源代码写下const char* p = "我";的时候(不管源文件保存为什么编码格式,但标准规定源文件带bom utf8),编到二进制模块内的常量p的内容究竟是什么编码,GBK?UTF8?还是其他? C++根据编译器不同,有不同的行为: GCC可以使用编译参数指定 而MSVC是根据操作系统“非Unicode程序的语言”这个设置来编…
今天遇到一个奇怪的问题. 开发环境: 1. Eclipse CDT,使用 MinGW 的 gcc 编译器和函数库 2. Visual Studio 2008 问题描述: 在 eclipse cdt 中用 gcc 编译了一个 dll,这个 dll 中有一个接收收 FILE* 参数的函数 void thefunc(FILE* f) { fprintf(f, "Hello World!\n"); } 编译成 dll 后,在 MSVC 下使用这个 dll 中的 thefunc 函数,编译能通过…
Preface “Examples of designs that meet most of the criteria for "goodness" (easy to understand, flexible, efficient) are a recursive-descent parser, which is traditional procedural code. Another example is the STL, which is a generic library of…
#ifdef Q_OS_WIN #pragma execution_character_set("UTF-8") #endif…
将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.dll 然后用下面的脚本生成Windows MSVC需要的模块定义文件(.def, .lib和.exp), 然后就可以在VC中使用了. 前提系统要安装VS. 系统要求: Windows7+VS Studio (2008 and later)+MSYS 1) 根据32位dll生成模块定义文件的pytho…
字符编码的问题,上大学那会儿就遇到过,一直都是云里雾里,没太搞清楚.最近又遇到了问题,想在C++的控制台上输出Utf-8编码的汉字字节流.尝试了好多次都是乱码,后来花了些时间查查资料,又和同事交流了一下,算是把C++上对于UTF8编码的处理大概摸清楚了. 字符集 先说一个名词:字符集,没听过的先百度一下,其实就是一种将字符编码的格式,像我们常说的ASCII,UTF8,GBK都是常用的字符集. 首先要清楚,从你在编辑器里输入一个UTF8汉字开始,到最终在控制台上显示出来,整个流程涉及到三个概念,分…
方法一:使用QStringLiteral()宏对每个中文字符串封装,此方法的缺点是不能在使用tr()函数用于字符串翻译: 方法二:强制MSVC编译器采用UTF-8编码生成可执行文件,需要在出现中文字符串的文件中加入如下语句: #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif…
来自: https://svn.boost.org/trac10/ticket/11885 MSVC 12: compiler error in boost/type_traits/common_type.hpp(42) Reported by: sk.aquileia@… Owned by: John Maddock Milestone:   Component: type_traits Version: Boost 1.60.0 Severity: Problem Keywords:   C…
CMake与MSVC工程化实践 CMake基础 cmake无疑是最流行的c++跨平台构建工具之一,关于cmake入门指南这里不再赘述,官方文档是最好的参考,这里通过一个例子简述构建一个工程常用的函数和变量. 假设此项目有三个文件hello.h.hello.cpp.main.cpp,hello.h和hello.cpp导出一个void hello();的函数,在main.cpp中使用,CMakeList.txt如下: # 指明当前CMake的版本不能小于指定版本 cmake_minimum_requ…
Posted February 26th, 2009 by earnie dll faq msvc TODO: Reformat to new wiki syntax. !!! [Minimalist GNU for Windows | http://www.mingw.org] !! MSVC and MinGW DLLs Assume we have a testdll.h, testdll.c, and testmain.c. In the first case, we will comp…
安装QT后直接打开,报错. 需要删mysql环境变量. error: Failed to retrieve MSVC Environment from "D:\Englishpath\VS2013\VC\vcvarsall.bat":'MYSQL' is not recognized as an internal or external command,operable program or batch file.'MYSQL' is not recognized as an inte…
MSVC++ 4.x _MSC_VER == 1000 MSVC++ 5.0 _MSC_VER == 1100 MSVC++ 6.0 _MSC_VER == 1200 MSVC++ 7.0 _MSC_VER == 1300 MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) MSVC++ 9.0 _MSC_VER == 1500 (Visual Stud…
用VisualStudio做为IDE,使用Qt框架,显示中文,会出现乱码的情况. 原因:MSVC编译器虽然可以正常编译带BOM的UTF-8编译的源文件,但是生成的可执行文件的编码是Windows本地字符集,比如GB2312.在可执行文件中,字符串是以GB2312编码的,而可执行程序执行到该语句时,对这个字符串却是以UTF-8解码的,这样就会出现乱码. 解决方法有两种: 1.使用QStringLiteral(str)宏封装字符串,但此种方法不能使用tr()函数用于翻译字符串. QString st…
一份粗糙的研究记录,有待补完和整理. MinGW:c -> o           gcc -c a.cc -> exe         gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe)o -> exe         gcc a.o b.o ... -o main.exec -> dll,def,a   gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba…
很久沒有寫程式設計入門知識的相關文章了,這篇文章要來談談程式庫 (Library) 連結,以及關於 MSVC 與 CRT 之間的種種恩怨情仇. 如果你使用的作業系統是 Linux.Mac 或其他非 Windows 平台,你可以忽略這篇文章:如果你使用的作業系統是 Windows 平台,但沒有用 Microsoft Visual Studio C++(以下簡稱為 MSVC)軟體撰寫 C++ 程式的話,這篇文章對你的幫助可能很有限:但如果你的作業系統是 Windows,而且你使用的程式整合開發環境是…
#ifdef _MSC_VER_ // for MSVC #define forceinline __forceinline #elif defined __GNUC__ // for gcc on Linux/Apple OS X #define forceinline __inline__ __attribute__((always_inline)) #else #define forceinline #endif…
同一份源代码,源文件编码格式为UTF-8: string tmp = "我"; ;i<tmp.size();++i) { printf("%0x ",tmp[i]); } 在MSVC编译器下输出 ffffffce ffffffd2 在MingW编译器下输出 ffffffe6 ffffff88 ffffff91 很明显,MSVC对中文采用GB2312或GBK编码,即使用两个字节表示汉字 而MingW对中文采用UTF-8编码,即使用三个字节存储汉字. 另外注意的是…
quazip 在windows  msvc 2005 下的编译 http://blog.csdn.net/v6543210/article/details/11661427…
msys2 和 centos https://ffmpeg.org/download.html https://ffmpeg.zeranoe.com/builds/ Windows MSYS2准备 1)安装MSYS2 http://www.msys2.org/ http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe // http://repo.msys2.org/distrib/i686/msys2-i686-2016102…
1.下载安装msys2 http://www.msys2.org/下载msys2 下载安装完成后,在msys2的shell中安装编译FFMPEG必要的命令行工具 pacman -S make gcc diffutils yasm pkg-config 2.配置编译环境 编辑C:\msys64\msys2_shell.cmd 将 rem set MSYS2_PATH_TYPE=inherit 修改为 set MSYS2_PATH_TYPE=inherit 到开始菜单,执行“Visual Studi…
在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,更麻烦的是还有可能造成自己代码中产生的警告被淹没在多过的无关警告中,而被忽略掉的情况. 所以要想办法关闭这些第三方代码和库产生的警告. 关闭特定的warning可以在编译时通过命令行参数的方式指定,比如 gcc 是在命令行一般是用-Wno-xxxx这样的形式禁止特定的warning,这里xxxx代入特定的…
出于学习目的,想建一个vs2010工程来编译ffmpeg(http://www.ffmpeg.org/),但是由于意义不大,并且工作量太大放弃了.原因如下: 1.一些unix平台相关的头文件.库的依赖.这个是最好解决的,对应替换下就行了. 2..C99支持,MSVC不支持C99,而ffmpeg需要它.比如msvc编译c文件,不能inline一个函数:还有c99怪异的初始化语法.这个工作量有些大,但是并不是不能解决的.因为对应的需要修改的语法就那么几种,花一两个小时就可以搞定. 3.许多ffmpe…
环境 OS::Microsoft Windows [Version 10.0.17134.285] x64 VSC:Version:1.27.2 (system setup) VS:2017 心血来潮想使用VSC来写C++,官方文档和网上大多资料都是使用g++进行编译的.这里给出使用MSVC的方案. 参考了<用Visual Studio Code 来生成您的C++应用程序>的方法,当给出的版本太旧,在最新的win10上会有错误. 在插件界面安装C++开发组件. 新建个文件夹,命名为hellow…
Qt 中有两种方式编译,一种是MinGW ,另一种MSVC. 其中:MSVC是指微软的VC编译器 MingGW是指是Minimalist GNU on Windows的缩写.它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你         在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库.…
折腾了好几个小时,终于理清了Boost链接的组合方式,记录一下. A1.动态链接Boost的动态库A2.静态链接Boost的动态库 B1.动态链接VC运行库B2.静态链接VC运行库 那么这样就有2x2=4种方式链接Boost.但是一般使用Boost的码农们都不会用动态链接的方式吧,因为Boost的头文件默认都是静态链接的而且动态链接还要附带Boost的DLL文件,另一方面,我们可能并不想让别人知道我们用了Boost.基于这些原因,本文只考虑静态链接Boost库的方式 再说说MSVC,一个项目有D…
1.下载Boost(http://www.boost.org) 我目前用的是1.61.0版本 2.将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等命令. 3.cmd进入到boost目录下面,执行"bootstrap.bat gcc",目录下会生成一个b2.exe 4.执行b2.exe开始编译.可以根据自身需要执行不同的编译命令,比如: bjam.exe stage –toolset=gcc –with-exception –with…