随笔分类 - c/c++
关于dll的路径问题
摘要:最近在做一个sdk二次开发的项目,具体是将一个C++开发的SDk用C#将它的API接口全部封装一遍,然后再做一个demo就好了好不容易封装完了,在使用的时候出了问题。原来SDK中的dll老是加载不到。不是路径的问题,因为所有可能的路径我都试过了。问题是,C#引用的C++的那个dll又引用了一个dll...
阅读全文
C#dll中无法找到c++dll中函数的入口
摘要:刚试验了一下,老是c#中的dll无法找到c++dll中的函数的入口;暂时发现有俩个原因1,没有用extern “C” _declspec(dllexport),导致c#无法找到入口。2,在c++中的函数在一个namespace下,所以c#没有找到他另外,据说当C#的函数和C++的函数的参数内存没有对...
阅读全文
C#委托及事件处理机制浅析
摘要:事件可以理解为某个对象所发出的消息,以通知特定动作(行为)的发生或状态的改变。行为的发生可能是来自用户交互,如鼠标点击;也可能源自其它的程序逻辑。在这里,触发事件的对象被称为事件(消息)发出者(sender),捕获和响应事件的对象被称作事件接收者。在事件(消息)通讯中,负责事件发起的类对象并不知道哪...
阅读全文
lib和dll的例子
摘要:.dll和.lib的区别 lib是静态库,dll一般是动态链接库(也有可能是别的)比如要编译个exe,lib在编译的时候就会被编译到exe里,作为程序的一部分而dll是不被编译进去,是运行的时候才调入的(可能是exe刚运行就调入,也可能运行了一半才调入)用法,lib需要个.lib文件和一个.h文件,...
阅读全文
C#中自定义消息,与MFc对比
摘要:在C#中采用的是事件驱动方式,但在我们使用的过程中,有时候通过调用系统原有的消息,处理起来会比较简单一些,特别是在处理与DLL文件的交互时,的确是非常的方便。 在C#中使用自定义消息 在C#中使用自定义消息非常简单,只需要下面几个简单的步骤就可以了: 1、 定义消息 定义...
阅读全文
MFC消息响应机制 q
摘要:MFC消息响应机制分析 1 引言微软公司提供的MFC基本类库(Microsoft Foundation Classes),是进行可视化编程时使用最为流行的一个类库。MFC封装了大部分Windows API函数和Windows控件,使得程序的开发变得简单,极大的缩短了程序的开发周期。MFC独创的Doc...
阅读全文
MFC中消息响应机制
摘要:由于视类窗口始终覆盖在框架类窗口之上,因此所有操作,包括鼠标单击、鼠标移动等操作都只能由视类窗口捕获。一个MFC消息响应函数在程序中有三处相关信息:函数原型、函数实现和以及用来关联消息和消息响应函数的宏。(1)在消息响应函数的原型代码中,函数声明的前部有一个afx_msg限定符,也是一个宏,该宏表明...
阅读全文
c++中__declspec用法总结
摘要:“__declspec”是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充。这些属性有:align、allocate、deprecated、 dllexport、dllimport、 naked、noinline、noreturn、nothrow、novtable、...
阅读全文
C++中使用接口
摘要:面向对象的语言诸如JAVA提供了Interface来实现接口,但C++却没有这样一个东西,尽管C++ 通过纯虚基类实现接口,譬如COM的C++实现就是通过纯虚基类实现的(当然MFC的COM实现用了嵌套类),但我们更愿意看到一个诸如 Interface的东西。下面就介绍一种解决办法。首先我们需要一些宏...
阅读全文
如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
摘要:1 什么是联合?联合(Union)是一种特殊的类,一个联合中的数据成员在内存中的存储是互相重叠的。每个数据成员都在相同的内存地址开始。分配给联合的存储区数量是“要包含它最大的数据成员”所需的内存数。同一时刻只有一个成员可以被赋给一个值。下面我们来看看C++中如何表达联合://Code#01union...
阅读全文
静态类的特点及用途
摘要:1:静态类只用于包含静态成员的类型,不能被实例化,我们可以直接使用它的属性与方法,静态类最大的特点就是共享。静态类的特性是防止继承,防止外部来NEW。它相当于一个sealed abstract类。2:静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识...
阅读全文
C#中的IntPtr类型
摘要:本文转自:http://zhidao.baidu.com/question/22825956.html问:c#中无法将类型“int”隐式转换为“System.IntPtr”这个是我引用了一个api函数时出现的问题,我在声明中把intptr换成了int还是不可以,这是为什么呢?要如何处理呢?答:您好,...
阅读全文
C#与C++对应的类型
摘要://c++:HANDLE(void*)----c#:System.IntPtr//c++:Byte(unsignedchar)----c#:System.Byte//c++:SHORT(short)----c#:System.Int16//c++:WORD(unsignedshort)---c#:S...
阅读全文
二进制最大公约数算法
摘要:求最大公约数的Euclid算法需要用到大量的取模运算,这在大多数计算机上是一项复杂的工作,相比之下减法运算、测试数的奇偶性、折半运算的执行速度都要更快些。二进制最大公约数算法避免了Euclid算法的取余数过程。二进制最大公约数基于下述事实:若a、b都是偶数,则gcd(a,b)=2*gcd(a/2,b...
阅读全文
[转]有关USES_CONVERSION
摘要:转自:http://blog.csdn.net/p40614021/article/details/6778100ATL:转换宏是各种字符编码之间进行转换的一种很方便的方式,在函数调用时,它们显得非常有用。ATL转换宏的名称是根据下面的模式来命名的[源类型]2[新类型]或者[源类型]2C[新类型]。...
阅读全文
GetSystemMetrics
摘要:函数原型:int GetSystemMetrics( int nIndex // system metric or configuration setting ); 函数返回与系统有关的信息 常数定义取得信息SM_ARRANGE设置windows如何排列最小化窗口的一个标志。参考api32.txt...
阅读全文
]用EnumChildWindows遍历窗口的方法
摘要:最近项目有需要,得到一个非自己实现的窗口控件对象。于是想起曾经做过类似功能。总结如下: 调用EnumChildWindows(this->m_hWnd, EnumChildProc, NULL);遍历指定窗口的所有子窗口。这里就是遍历This->m_hWnd的所有子窗口。this从外部窗口继承,外部...
阅读全文
C#下内存管理--垃圾收集
摘要:章节安排内存管理简介垃圾回收机制性能问题C#下非托管资源的处理要强调的几点References内存管理简介 对于任何一种编程语言,内存管理都是不得不提很重要的一块内容,但可惜的是目前为止没有任何一种编程语言对内存管理处理的非常完美,每种语言都在兼顾性能 效率,语法语义易用性等方面折中中有所侧重。例如...
阅读全文
string中c_str()、data()、copy(p,n)函数的用法
摘要:标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。1. c_str():生成一个const char*指针,指向以空字符终止的数组。注:①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失...
阅读全文