随笔分类 -  编译、链接、装载、库

操作系统开发系列教程
摘要:转自:http://www.brokenthorn.com/Resources/OSDevIndex.html 两篇译文:http://blog.chinaunix.net/uid-789299-id-14129.html Operating System Development Series Our OS Development Series is a series of step by ... 阅读全文
posted @ 2013-11-26 20:17 qinfengxiaoyue 阅读(557) 评论(0) 推荐(0)
转:C函数调用理解
摘要:1 空函数 int main() { 00411360 push ebp ;压入ebp 00411361 mov ebp,esp ;ebp = esp,保留esp,待函数调用完再恢复,因为函数调用中肯定会用到esp. 00411363 sub esp,0C0h ;esp-=0C0h(192);为该函数留出临时存储区 ;将其他指针或寄存器中... 阅读全文
posted @ 2013-10-31 16:14 qinfengxiaoyue 阅读(598) 评论(0) 推荐(0)
C/C++:函数的调用约定(Calling Convention)和名称修饰(Decorated Name)以及两者不匹配引起的问题
摘要:转自:http://blog.csdn.net/zskof/article/details/3475182 注:C++有着与C不同的名称修饰,主要是为了解决重载(overload);调用约定则影响函数参数的入栈顺序和清栈主体;而名称修饰也因调用约定而不同。 调用函数的主体和被调用函数的主体,可能会有不同的调用约定和名称修饰,两者的不匹配会引发问题。 使用C/C++语言开发软件的程序员... 阅读全文
posted @ 2013-10-30 20:09 qinfengxiaoyue 阅读(1193) 评论(0) 推荐(0)
跨DLL边界传递CRT对象的隐患(或诸如:HEAP[]: Invalid Address specified to RtlValidateHeap(#,#)问题出现的原因)
摘要:Potential Errors Passing CRT Objects Across DLL Boundaries:http://msdn.microsoft.com/en-us/library/ms235460.aspx 阅读全文
posted @ 2013-06-05 21:55 qinfengxiaoyue 阅读(590) 评论(0) 推荐(0)
WinMain是如何被链接到一个MFC应用程序中的?
摘要:译自:http://stackoverflow.com/questions/6871836/how-does-mfcs-wwinmain-end-up-in-the-executable 在VS的解决方案管理中右击你的MFC项目:属性-》链接器-》命令行,在命令行的其他选项中添加链接参数:/verbose . 然后重新生成项目, 此时在输出窗口会显示出链接器所找到的一系列的符号的追踪情况。在其... 阅读全文
posted @ 2013-02-25 15:19 qinfengxiaoyue 阅读(1609) 评论(0) 推荐(0)
MFC的静态库.lib、动态库.dll(包含引入库.lib)以及Unicode库示例
摘要:以vs2012为标准。转自:http://technet.microsoft.com/zh-cn/library/w4zd66ye ,有改动。 一 MFC的静态库(.lib) MFC静态库使用下列命名约定: uAFXcWd.LIB . 库命名约定的说明符如下: 说明符 值和含义 u (n) ANSI... 阅读全文
posted @ 2013-02-20 21:59 qinfengxiaoyue 阅读(6126) 评论(0) 推荐(0)
VC++动态链接库(DLL)编程深入浅出
摘要:VC++动态链接库(DLL)编程深入浅出原作者:宋宝华 阅读全文
posted @ 2013-02-11 00:03 qinfengxiaoyue 阅读(267) 评论(0) 推荐(0)
Visual Studio 10.0 /VC 目录下文件夹里的lib和dll解析及其在部署中的重分发
摘要:1. lib里是c或c++运行库的引入库和静态库(如msvcrt.lib、msvcprt.lib和libcmt.lib、libcpmt.lib); 2. atlmfc里的lib是mfc的引入库和静态库(--此处:mfc100.lib应该是对应mfc100.dll的静态库,而mfcs100.lib应该是其引入库--); (注:mfc100.dll是4.14MB,mfc100.lib是5.24MB... 阅读全文
posted @ 2013-02-07 23:36 qinfengxiaoyue 阅读(1369) 评论(0) 推荐(0)
MSVC:关于编译、链接、装载、库相关的一些概念
摘要:转自:http://www.fmddlmyy.cn/text3.html , 有改动. 1、Run-Time Library(运行时库) Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。 我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Tim... 阅读全文
posted @ 2013-02-07 23:31 qinfengxiaoyue 阅读(3433) 评论(0) 推荐(1)
静态链接到CRT(LIBCMT.lib)的隐患
摘要:转自:http://www.codeproject.com/Articles/22642/What-Every-Computer-Programmer-Should-Know-About-W When the CRT/C++ Library is linked statically, then all its code is embedded into the resulting exec... 阅读全文
posted @ 2013-02-06 16:30 qinfengxiaoyue 阅读(695) 评论(0) 推荐(0)
C/C++:函数的编译方式与调用约定以及extern “C”的使用
摘要:函数在C++编译方式与C编译方式下的主要不同在于:由于C++引入了函数重载(overload),因此编译器对同名函数进行了名称重整(name mangle)。因此,在C++中引 用其他C函数库时,需要对声明使用的函数做适当的处理,以告知编译器做出适应的名称处理。 函数的调用约定涉及了函数参数的入栈顺序、清栈主体(负责清理栈的主体:函数自身还是调用函数者?)、部分名称重整。 如,在C编译方式下... 阅读全文
posted @ 2013-02-04 15:48 qinfengxiaoyue 阅读(12454) 评论(0) 推荐(1)
关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决
摘要:转自:http://hi.baidu.com/qinfengxiaoyue/item/ff262ccfb53b4c2ba0b50a89 引自:http://blog.csdn.net/sptoor/archive/2011/02/23/6203376.aspx 对全文有改动。 提示:阅读前需要对静态库(.lib)、动态库(.dll)、导入库(这个还是.lib)之间的区别联系有了解。建议先读读... 阅读全文
posted @ 2013-02-01 23:19 qinfengxiaoyue 阅读(22372) 评论(0) 推荐(7)
#pragma预处理命令
摘要:#pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma指令: #pragma comment(lib,"XXX.lib") 表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。 #pragma comment(linker,"/ENTRY:main_function") 表示指定链接器选项/ENTRY:main_function #pragma ... 阅读全文
posted @ 2012-06-05 01:12 qinfengxiaoyue 阅读(36341) 评论(1) 推荐(12)
Tchar.h 中的一般文本映射
摘要:为简化代码传输以方便国际使用,Microsoft 运行时库为许多数据类型、例程和其他对象提供 Microsoft 特定的“一般文本”映射。您可以使用 Tchar.h 中定义的这些映射,根据使用 #define 语句定义的清单常数,编写可以为单字节、多字节或 Unicode 编译的一般代码。一般文本映射是与 ANSI 不兼容的 Microsoft 扩展。 使用 Tchar.h 可以从同一个源中生成单... 阅读全文
posted @ 2012-05-27 00:36 qinfengxiaoyue 阅读(449) 评论(0) 推荐(0)
#pragma comment linker 下的 /subsystem:windows 与 /subsystem:console
摘要:关键字:#pragma comment linker /subsystem:windows /subsystem:console 转自:http://blog.csdn.net/lostangels/article/details/2027642 操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相同。在VC+... 阅读全文
posted @ 2012-05-27 00:16 qinfengxiaoyue 阅读(1993) 评论(1) 推荐(1)