VC
dbdoing
一名在路上的程序员
展开
-
什么是DLL,如何调用DLL
如何调用DLL (基于Visual C++6.0的DLL编程实现)一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代转载 2013-10-09 10:09:45 · 3383 阅读 · 2 评论 -
vs2010中自动生成Qt的moc文件的方法
Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件转载 2015-05-04 15:58:59 · 4205 阅读 · 0 评论 -
VS中使用“附加到进程”进行调试的方法
有些时候碰到自己开发的程序嵌入到别人的框架中,而在接口的地方出了问题,而又不方便将自己的模快加入到别人的工程中【有很多相关的文件,还有mster页面等】,这个时候VS的附加到进程调试变得不可或缺了,过多介绍的东西就不多说了,直奔主题1、拷贝project1的dll及相关的xap及页面文件到对应的project2工程中,不必加入到工程中。2、启动Project2工程【Ctrl+F5】转载 2015-04-21 16:35:16 · 9694 阅读 · 0 评论 -
VC 中字符串相关的宏 _T、TEXT,_TEXT、L 的区别与作用
一、 在字符串前加一个L作用: 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。 strlen("asd") = 3; strlen(L"asd") = 6; 二、 _T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode转载 2014-10-30 14:40:11 · 859 阅读 · 0 评论 -
CString与string之间的转换
CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0);unicode情形下: CStringW strw = _T("test"); CStringA stra(strw.GetBuffer(0)); st转载 2014-06-05 21:44:37 · 4075 阅读 · 0 评论 -
编译(Compile)、连接(Link)都做了什么事情
一个C程序的生成要经历以下步骤: 1.编写文本代码,生成C或Cpp文件,这时候它还是文本的; 2.编译,就是Compile,由C编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了; 3.连接,在汇编里称Link,在C里叫生成,即Build,它的作用是生成可执行的exe文件。由于一个程序的转载 2014-03-06 09:27:18 · 6611 阅读 · 0 评论 -
VS2010中Debug模式下报"HEAP CORRUPTION DETECTED"错误
今天写代码时,在Debug模式下运行时突然报了这样的错误:"HEAP CORRUPTION DETECTED",如下图: 在Release模式下运行时报如下的错误:我从表面上看,就知道是heap除了问题,下面是我的代码:------------------------------------------------------------------------------原创 2013-12-10 09:53:23 · 4619 阅读 · 0 评论 -
Debug 和 Release版本的区别
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。 Debug版本包括调试信息,所以要比Release版本大很多(转载 2014-01-07 10:11:34 · 1049 阅读 · 0 评论 -
vc中debug版程序正常但release版崩溃的解决方法
I. 内存分配问题1. 变量未初始化。为debug中会自动给变量初始化found=FALSE,而在release版中则不会。所以尽可能的给变量、类或结构初始化。2. 数据溢出的问题如:char buffer[10];int counter;lstrcpy(buffer, "abcdefghik");在debug版中buffer的NULL覆盖了counter的高位,但转载 2014-05-10 10:05:48 · 3051 阅读 · 0 评论 -
VC中项目配置详解
一.IDE基础配置 1. 字体VC6中“Tools→Options→Format→Font”配置字体;VC2005中“工具→选项→环境→字体和颜色”配置字体。编写代码一般采用等宽字体,等宽点阵(位图)字体,相对矢量字体而言具有兼容性好和显示清晰的优点。常用的编程等宽字体包括Fixedsys(VC6和notepad御用字体)、Consolas、YaHei Mono。VC6默认可选转载 2014-03-11 14:02:26 · 2312 阅读 · 0 评论 -
详解 “预处理、编译(compile)、 代码优化、 汇编(Assembly)、 链接 (link)”的具体过程
我们在用vc写好代码后,在进行编译和连接的时候,经常会遇到各种问题:如在连接时遇到的问题:(1)error LNK2019: 无法解析的外部符号*** ,该符号在函数***中被引用 (2)error LNK2001: 无法解析的外部符号 ***等等,出现了这种问题,我们就去百度,谷歌,看到解决方法就去试,试好了,就过了,但是,这到底是怎么回事呢,如果我们能对编译和连接的原理理解原创 2014-03-06 10:11:15 · 2897 阅读 · 0 评论 -
vs中控制台程序输出时一闪而过的解决办法
在VS编写控制台程序的时候,包括使用其他IDE(Visual C++)编写C/C++程序,经常会看到程序的执行结果一闪而过,要解决这个问题,可以在代码的最后加上system("pause")、getchar()、cin.get()。 比较常用的做法是使用system("pause"),这篇文章Things to Avoid in C/C++ -- system("paus转载 2013-11-15 13:28:23 · 23004 阅读 · 1 评论 -
“error LNK2019:无法解析的外部符号”的解决方案
在使用vs2008调试程序的过程中,经常会出现无法解析的外部符号问题,可能的原因有很多种,下面这些是我一年来积累的经验.仅供参考. 考虑可能的原因:[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.[1]只写了类声明,但还没有写实现类,造成调用时无法解析[2]声明和定义没有统一,造成链接不一致,无法解析[3]没转载 2014-01-02 15:36:27 · 13484 阅读 · 0 评论 -
vc如何引入lib库
vc引入lib库链接库分为静态链接库和动态链接库,静态链接库只有一个.lib文件,而动态链接库则有一个.lib文件和.dll文件;静态链接库的.lib文件里面有函数真正实现的机器码,而动态链接库的.lib只有函数的符号名,真正的函数的实现在dll文件中。当你使用静态库或者使用隐式的方式加载动态连接库的话,都需要将.lib文件加到vc工程里面去,他们的区别就在于,使用动态库的话,在运行程转载 2013-09-12 15:06:11 · 3910 阅读 · 0 评论 -
解析VC++ Name Mangling 机制
摘要在C++中,Name Mangling 是为了支持重载而加入的一项技术,目前C++ Name Mangling 并没有统一的标准,也没有较完整的中文文档化资料,所以本篇文章在VS2005环境中,解析C++ Name Mangling 的技术细节,以及怎样将VC Name Mangling后的名称还原为可读的形式。 目录l Name Mangling 简介转载 2014-01-13 20:22:36 · 892 阅读 · 0 评论 -
_WIN32_WCE 宏里边的代码显示灰色
代码: #ifndef _WIN32_WCE ................. #endif---------------------------------------------------------------------------1 _WIN32_WCE的意义_WIN32_WCE表示是否是windows c转载 2013-11-12 08:57:40 · 1952 阅读 · 0 评论 -
VC++或QT下 高精度 多媒体定时器
在VC编程中,用SetTimer可以定义一个定时器,到时间了,就响应OnTimer消息,但这种定时器精度太低了。如果需要精度更高一些的定时器(精 确到1ms),可以使用下面的高精度多媒体定时器进行代码优化,可以达到毫秒级的精度,而且使用方便。先要包含头文件"mmsystem.h"和库文 件"winmm.lib"。 虽然Win95下可视化开发工具如VC、Delphi、C++ Builde转载 2013-10-23 16:23:03 · 3220 阅读 · 0 评论 -
为何Windows下的动态库总伴随一个静态库?
为何Windows下的动态库总伴随一个静态库?今天同学来问了一个问题:Visual Studio中生成的动态库总是伴随着一个静态库文件,我把这两个文件同样进行重命名之后还能不能使用?我对VS下的动态库的生成并不是很熟悉,表示无法回答这个问题。但这个问题本身却也让我产生了疑问:动态库真的需要总是伴随着一个静态库?根据我在Linux下的经验,这两种形式的代码库是没有什么依赖转载 2015-08-14 16:25:49 · 2583 阅读 · 1 评论