02 2009 档案

摘要:代码的链接在《用C#编写一个进程外的COM组件》,小技巧:如果你要同时看示例代码和讲解的话,可以用浏览器分别打开示例代码和这篇文章,然后使用Windows提供的纵向平铺窗口功能就可同时看两篇文章了。 TestComVisibleClass.cs里面定义了我们要发布给COM客户程序的.NET对象,由于我们的.NET进程外组件需要调用几个COM库的API,因此在ComHelperClass里面... 阅读全文
posted @ 2009-02-21 15:22 donjuan 阅读(4570) 评论(0) 推荐(0) 编辑
摘要:在CSDN的空间里写了几篇关于编译器制作的文章,分了一下类: 词法分析: 用C++模板实现正则表达式 实现正则表达式处理功能 语法分析: C#语法造成的小问题(编译原理知识) 阅读全文
posted @ 2009-02-21 12:33 donjuan 阅读(547) 评论(0) 推荐(0) 编辑
摘要:昨天看到一篇帖子,说的是C#里面针对byte类型的计算,+号操作符和+=操作符对于数据类型的隐式转换有两种不同的处理方式,例如下面的代码是不能编译通过的: using System; public class ByteOp { public static void Main() { byte b = 1; b = b + 1; } } 使用csc.exe编译的结果是:ByteOp.cs(8,13)... 阅读全文
posted @ 2009-02-20 19:06 donjuan 阅读(2093) 评论(2) 推荐(1) 编辑
摘要:在COM时代里,套间是用来简化多线程环境下使用COM对象的,然而在.NET里面,微软又放弃了套间的概念,这样给我们在.NET里面使用COM对象的时候造成了很多的麻烦。例如有的时候你会发现在有的线程里面创建了COM对象并将它的引用保存在全局变量里面,在其他的线程里面使用的时候,却发现.NET扔出一个InvalidCastException的异常,发生这种情况大多数都是因为两个.NET线程运行在不同的套间引起的。 阅读全文
posted @ 2009-02-20 19:03 donjuan 阅读(1754) 评论(1) 推荐(0) 编辑
摘要:在网上看到很多网友对.NET程序与COM互操作的编码有疑问,写了几篇文章,希望能够对大家有所帮助。 P/Invoke: 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明 .NET程序使用COM组件: COM套间对.NET程序使用COM对象的影响 让人混淆的UnmanagedType.LPStruct列集指令(翻译) COM程序中使用.NET组... 阅读全文
posted @ 2009-02-20 19:00 donjuan 阅读(2018) 评论(0) 推荐(0) 编辑
摘要:我在以前的一篇文章《COM互操作 - 在VB 脚本里面使用.NET类型》里面写过如何在COM客户端程序里面使用.NET组件,但是这些.NET组件都属于进程内的组件,即COM客户端需要将CLR和.NET组件都加载进自身进程的内存空间里面才能使用。上一次在MSDN中文论坛上看到有网友问如何使用C#编写一个进程外的COM组件,由于在使用regasm.exe注册.NET组件的时候,regasm.exe将.... 阅读全文
posted @ 2009-02-20 18:58 donjuan 阅读(5331) 评论(0) 推荐(0) 编辑
摘要:.NET常见线程简介(翻译) 阅读全文
posted @ 2009-02-20 13:27 donjuan 阅读(516) 评论(0) 推荐(1) 编辑
摘要:VC编写的程序不能在其他机器上运行的解决方案(续) VC编写的程序不能在其他机器上运行的解决方案 阅读全文
posted @ 2009-02-20 10:36 donjuan 阅读(579) 评论(0) 推荐(0) 编辑
摘要:我在前面的文章里面提到由于side-by-side问题导致的VC编写的程序不能正常启动的问题的解决方案,这种方法是针对于单个可执行文件的解决方案,但是有的时候你可能会碰到另外一种情况—也是由于side-by-side问题导致的,你的程序支持插件,当你的程序试图加载一个依赖于CRT的DLL的时候,Windows告诉你不能加载DLL。比如微软在06年发布了CLR的开源版本,你在自己机器上用... 阅读全文
posted @ 2009-02-20 10:34 donjuan 阅读(2665) 评论(0) 推荐(0) 编辑
摘要:有的时候,你在Visual C++上面经过好几个月的辛勤努力,终于将程序编写完成并且测试完毕,然而当你试图在客户的发布机上运行刚写好的程序时,有可能会碰到类似下面的错误,操作系统告诉你“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”:一般情况下,这个问题都是由于程序不能找到所需要的C运行库(CRT)而引起的。在Windows XP SP2以后... 阅读全文
posted @ 2009-02-20 10:33 donjuan 阅读(17633) 评论(2) 推荐(1) 编辑
摘要:请看下面这段VBS代码: Set obj = CreateObject("System.Collections.ArrayList") obj.Add("this is a test") obj.Add(1) obj.Add(obj) Msgbox obj(0) Msgbox obj(1) Msgbox obj(2).ToString() 代码里面试图创建一个ArrayList的.NET对象,然后... 阅读全文
posted @ 2009-02-20 00:25 donjuan 阅读(649) 评论(0) 推荐(1) 编辑