Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579563
  • 博文数量: 190
  • 博客积分: 10937
  • 博客等级: 上将
  • 技术积分: 2205
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-07 11:28
文章分类

全部博文(190)

文章存档

2012年(1)

2011年(27)

2010年(20)

2009年(142)

我的朋友

分类:

2010-06-28 21:23:24

一、生成C#类库 Csharp.DLL
(1)在Visual Studio 2008 中创建C#的类库项目 CSharp
(2)实现的类假设为:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;//必须引用此空间

     namespace CSharp
{
    [Guid("4BF8F1CE-F33D-48bd-A7C8-C4E8EE7376B1")]
    public interface iClass1
    {
        string A();
    }

    [Guid ("39BE150B-7684-4a16-9574-0F6C15BDE407")]
    [ClassInterface(ClassInterfaceType.None)]
    public class Class1 : iClass1
    {
        public string A()
        {
            return "测试字符串A";
        }
    }
}
/*通过菜单的 “工具/创建 GUID”。注意要选择Define Guid{….}格式
* 例如:
// {4BF8F1CE-F33D-48bd-A7C8-C4E8EE7376B1}
DEFINE_GUID(<>,
0x4bf8f1ce, 0xf33d, 0x48bd, 0xa7, 0xc8, 0xc4, 0xe8, 0xee, 0x73, 0x76, 0xb1);

    // {39BE150B-7684-4a16-9574-0F6C15BDE407}
DEFINE_GUID(<>,
0x39be150b, 0x7684, 0x4a16, 0x95, 0x74, 0xf, 0x6c, 0x15, 0xbd, 0xe4, 0x7);
*/如果要增加其他方法,可如法炮制。
(3)COM生成设置(管理员权限)
配置:选择项目“属性”,选择“生成”,选择“为COM 互操作注册”
打开AssemblyInfo.cs文件,设置 [assembly: ComVisible(true)]
这样就可以生成CSharp.tlb文件
(4)生成解决方案
生成Csharp.DLL和Csharp.tlb即可。
二、生成C或C++的 Cdll.DLL
下面这个是测试程序,用来测试所写的C# COM组件是否正常。在VC6.0中测试
#include "stdafx.h"
#import "CSharp.tlb"//1、导入类型库tlb
using namespace CSharp;//下面COM初始化中可以不用写命名空间
void main()
{    CoInitialize(NULL);// 2、初始化COM以及产生智能指针
    iClass1Ptr p(__uuidof(Class1));//命名规则:接口Ptr p((__uuidof(类)))
    //3、调用COM中的方法
    _bstr_t pt=p->A();//这个方法返回 string类型.可以根据IDE的提示设置类型
     printf(pt);
    CoUninitialize(); //4、释放环境
}
阅读(882) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~