摘要:
这篇解决上篇那个结构体作为返回值的问题。我们结合反汇编来探索这里面的秘密。如何反汇编?方法如下:在C++函数内下断点,调试到断点断下,右键菜单,选择"反汇编",反汇编是VS自带功能。下面是几个简单的类:[代码]分别用上面的方法来逐个分析汇编:汇编里有我详细的注释:[代码]总结一下,这个结构体作为返回值,主要依赖于编译器对于超过8字节的返回值的编译处理。第一:不建议使用结构体作为返回值,因为这太依赖... 阅读全文
摘要:
这篇讲关于结构体和结构体指针的P-INVOKE,关键有4个P-INVOKE类型,结构体作为输入输出参数。结构体指针作为输入输出参数。还有结构体内的成员类型分为:数组,指针,指针数组,结构体,结构体指针,结构体数组,结构体指针数组。当然还有类继承(这里只介绍了单继承)。其中有一个比较费解的是结构体作为返回值的P-INVOKE的奇怪现象,下一篇结合反汇编讲解。第一:C++结构体和C#结构体对应关系,看... 阅读全文
摘要:
在使用结构体指针,进行C#和C++的互相调用。边界对齐是一个大问题,因为边界对齐问题,结构体的成员并不是顺序在内存一个挨着一个的排序。而且在C++中可以使用#pragma pack(n)改变边界对齐的方案,那C#的结构体怎么对应C++的结构体那?(什么是边界对齐,这里不解释,不懂得可以去看看C++基本编程之类的书好好恶补一下.)第一:最普通的情况下,C++代码没有使用#pragma pack(n)... 阅读全文
摘要:
这篇是讲述P-INVOKE中,应对各种指针的方法。包括普通指针,字符串指针,二级指针,指针数组,函数指针,结构体指针。篇幅估计有点长,大家耐心点看。嘿嘿~~第一:普通指针,包括char *,short *,int *,__int64 *,这些指针进行平台调用是都对应C#的IntPtr类型,然后使用Marshal.ReadXXX()系列函数读取就可,写内存时使用Marshal.WriteXXX()系... 阅读全文
摘要:
可以说新手使用P-INVOKE最开始的头疼就是C#和C++的字符串传递,因为这里涉及到两个问题。第一:C#的string和C++的字符串首指针如何对应。第二:字符串还有ANSI和UNICODE(宽字符串)之分。本文分三部分阐述:第一:字符串指针当输入参数,第二:字符串指针作为返回值,第三:字符串指针作为输入输出参数。C++部分的测试代码很简单这里就全部贴出来了:[代码]下面看C#如何调用。第一:字... 阅读全文
摘要:
第一:C# 调用C++,使用P-INVOKE技术调用C++编写的动态链接库。而动态链接库导出的一般有两种调用协议,__stdcall和_cdecl。下面展示调用两种不同调用协议的方法:C++:[代码]c#:[代码]第二:C#调用C++代码,也可以间接的使用C++的函数指针。(强烈建议不要使用此方法)c++:[代码]C#:[代码]第三:C++调用C#函数,C#定义方法和方法的委托。传递委托给C++函... 阅读全文
摘要:
最近开了弄了申请了一个虚拟空间,装上了Z-BLOG,使用Qeeke主题,感觉还不错。听网上老说SEO,虽然博文没写多少,但是也希望自己的网站靠前一点。Z-BLOG使用的是插件很不错,只要开启5个SEO插件就可以轻轻松松SEO,很不错。插件如下:Google站点地图 - SitemapsPing中心和引用通告发送器 - PingToolRSS优化 - BetterFeed标题搜索引擎优化 - Tit... 阅读全文
摘要:
使用Z-BLOG,写博文并且要插入图片时,一般要实现文字环绕的效果。实际上技巧也很简单。在插入图片时,在下面对齐的下拉列表,选择向左,或者向右对齐就行。当然也可以在源代码级修改:<img style="float:left" src="xxx"></img>如果图片在DIV标签,或者Iframe标签中也可以这样写。<div style="float:left" src... 阅读全文
摘要:
刚才有网友问是不是可以异步发送邮件,我测试完全没有问题。注意这里用到了SendCompleted事件和SendAsync方法。代码如下,代码简单不做太多解释,不懂得看我上一篇文章。[代码]。很简单吧。代码测试完全没有问题,注意替换成真正有效的GMAIL账户。下载:下载 阅读全文
摘要:
C#利用System.Net.Mail类发送邮件相当简单。但是由于一般的邮件服务器都要进行垃圾邮件过滤,要求在使用SMTP服务前,先要进行POP3验证,但是.NET Framework的API不支持这个验证功能。所以在这里推荐大家使用谷歌的Gmail发送。通过谷歌的SMTP服务器发送邮件。第一:需要指明谷歌SMTP服务器地址:smtp.gmail.com第二:开启SSL安全连接。第三:需要谷歌的用... 阅读全文