C++******COM
文章平均质量分 56
wenjie2005
专注于游戏开发
展开
-
COM学习散记
COM是很有用的! 他实现了真正意义上的模块化组件. Dynamic link library 是其表现形式. 先看看如何查看DLL C:/Program Files/VS8/Common7/Tools/Bin 下有个Depends.Exe (这是我机子上的VS2005安装目录) 打开DLL文件的时候就用Depends.Exe. 你可以看到DLL里面的原创 2008-01-07 14:54:00 · 531 阅读 · 0 评论 -
COM组件模型基础
接触VC之四:COM组件模型基础作者:释雪一年又一年,已经又过了一年了。我VC的生涯已经两岁了。可以相当地庆贺一下哟。回顾这一年的学习(唉,还没有工作实践呢。这年头,工作不好找哇。),还学了不少的好东西。其中,最重要的就是COM组件模型,我个人觉得这个几乎是Windows的核心。许多先进的技术(比如微软著名的DirectX,ADO,没有人会不知道吧)都以COM组件的形式发布的。现在,我瞄上了另转载 2008-01-09 14:54:00 · 1255 阅读 · 0 评论 -
COM技术初探(三)-- 一个真正的COM
下载源代码一、实现ISmipleMath,IAdvancedMath接口和DllGetClassObject()1.1 实现ISmipleMath和IAdvancedMath接口让我们将原来的CMath 类(CMath其实就是"COM技术初探(二)COM基转载 2008-01-09 14:50:00 · 1012 阅读 · 0 评论 -
COM技术初探(一)
COM技术初探(一)作者: venture 一. COM是一个更好的 C++ 1. COM 是什么 2. 从 C++ 到 DLL 再到 COM 2.1 C++ 2.2 DLL 2.3 COM二. COM基础 1. COM基本知识 1.1 返回值HRESULT 1.转载 2008-01-09 14:48:00 · 783 阅读 · 0 评论 -
在VC中链接动态链接库的方法简要说明
方法一:windows提供了一套函数,用于加载动态链接库中的符号(函数和变量),调用这些函数去加载: 1. HINSTANCE LoadLibrary( LPCTSTR lpLibFileName); 2. FARPROC GetProcAddress( HMODULE hModule, LPCWSTR lpProcName); 3. BOOL FreeLibrary( HMOD原创 2008-01-09 11:33:00 · 583 阅读 · 0 评论 -
C/C++中动态链接库的创建和调用
动态连接库的创建步骤: 一、创建Non-MFC DLL动态链接库 1、打开File —> New —> Project选项,选择Win32 Dynamic-Link Library —>sample project —>工程名:DllDemo 2、新建一个.h文件DllDemo.h以下是引用片段: #ifdef DllDemo_EXPORTS #define Dll原创 2008-01-09 11:31:00 · 554 阅读 · 0 评论 -
Win32程序函数调用时堆栈变化情况分析
在经典的汇编语言教程中,函数调用时堆栈的使用都是着重讲解的问题。如今随着高级语言的越来越完善,单纯使用汇编开发的程序已经不多了。但对函数调用时堆栈动向的了解仍有助于我们明晰程序的执行流程,从而在程序编写和调试的过程中有一个清晰的思路。 一.调用约定在Win32中,有关函数的调用主要有两种约定。1._stdcall以__stdcall方式调用的函数有以下特征:• 参数由右至左压栈• 调用返回时,转载 2008-01-09 10:39:00 · 1116 阅读 · 0 评论 -
_stdcall 与 _cdecl 的区别
几乎我们写的每一个WINDOWS API函数都是__stdcall类型的,首先,需要了解两者之间的区别: WINDOWS的函数调用时需要用到栈(STACK,一种先入后出的存储结构)。当函数调用完成后,栈需要清除,这里就是问题的关键,如何清除?? 如果我们的函数使用了_cdecl,那么栈的清除工作是由调用者,用COM的术语来讲就是客户来完成的。这样带来了一个棘手的问题,不同的编译器产生栈的方式不尽相原创 2008-01-09 10:32:00 · 460 阅读 · 0 评论 -
LoadLibrary 和 GetProcAddress、FreeLibrary
LoadLibrary("文件名")返回得到的模块句柄,可以加载一个动态连接库或exe文件。 GetProcAddress(Hinstance,lpname)用来获取指定的动态连接库函数的地址 Hinstance为由LoadLibrary返回的模块句柄,lpname为文件名/函数名,返回值,成功返回动态连接库的地址,失败返回NULL, FreeLibrary(Hinstance),Hinstanc原创 2008-01-09 08:45:00 · 3253 阅读 · 0 评论 -
C++中extern "C"的使用
熟悉C++的人应该知道,extern "C"是为了使得C/C++能够在代码级进行互操作而引入的一条linker directive(链接器指令)。正是因为有了这条指令,才使得我们能够在C程序中访问用C++代码写的函数库,在C++程序中也可以访问用C写的函数库。今天在使用的过程中,对extern "C"的认识有所加深,写在这里与大家共享:又想犯懒了,呵呵,代码中的注释已经很清楚了,直接发一张测试原创 2008-01-09 08:43:00 · 853 阅读 · 0 评论 -
COM学习散记(3) DLL例子改进
上次发了个动态库的静态调用例子,现在改进了一下.使用动态调用.Windows API中的所有函数都包含在DLL中。其中有三个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。静态库和动态库静态库:函数和数据原创 2008-01-08 21:31:00 · 587 阅读 · 0 评论 -
COM学习散记(2) DLL例子
放个DLL小例子dll.h#ifdef DLL_API #else#define DLL_API _declspec(dllimport)#endifextern"C" DLL_API int add(int a,int b);DLL_API int subtract(int a,int b); dll.cpp#define DLL_API _declspec(dl原创 2008-01-07 15:13:00 · 496 阅读 · 0 评论 -
COM技术初探(二)
一、COM是一个更好的 C++ 1. COM 是什么 2. 从 C++ 到 DLL 再到 COM 2转载 2008-01-09 14:49:00 · 842 阅读 · 0 评论