青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

C# DLL COM


前言:為了介紹C#寫界面,C++寫算法的快捷交互開發(fā)方式,首先介紹c++,C#內(nèi)部的DLL,COM調(diào)用.

一, C# DLL
C#創(chuàng)建DLL非常的簡(jiǎn)單,只需要?jiǎng)?chuàng)建工程,選擇工程類型為class libaray即可。這里不介紹。

二,C# COM
C#創(chuàng)建COM,相對(duì)與一般的DLL,有幾個(gè)地方需要注意,看下面的實(shí)例:

Steps to create a Managed .NET C# COM Object:

  1. Open VS.NET2003->New Project->Visual C# Projects->Class Library.
  2. Project name: MyInterop.
  3. Create MyDoNetClass.cs file, and add the following lines of code:
    using System.Runtime.InteropServices;
        using System.Windows.Forms;
  4. Create an Interface IMyDotNetInterface.
  5. Create a class MyDoNetClass.
  6. Add the following line for MyDotNetClass:
    [ClassInterface(ClassInterfaceType.None)]

Although a .NET class is not directly invokable from unmanaged code, Microsoft has provided the capability of wrapping a .NET interface in an unmanaged layer of code that exposes the methods and properties of the .NET class as if the class were a COM object. There are two requirements for making a .NET class visible to unmanaged code as a COM object:

Requirement 1:

You have to add GUIDs - Globally Unique Identifiers - into your code for the interface and the class separately, through a GUID tool.

  1. Now, create a GUID for the Interface, and add the following line for the interface:
    [Guid("03AD5D2D-2AFD-439f-8713-A4EC0705B4D9")]
  2. Now, create a GUID for the class, and add the following line for the class:
    [Guid("0490E147-F2D2-4909-A4B8-3533D2F264D0")]
  3. Your code will look like:      
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace MyInterop
{
    [Guid(
"03AD5D2D-2AFD-439f-8713-A4EC0705B4D9")]
    interface IMyDotNetInterface
    {
        void ShowCOMDialog();
    }
     
    [ClassInterface(ClassInterfaceType.None)]
    [Guid(
"0490E147-F2D2-4909-A4B8-3533D2F264D0")]
    class MyDotNetClass : IMyDotNetInterface
    {
        
// Need a public default constructor for COM Interop.
        
public MyDotNetClass()
        {}
        
public void ShowCOMDialog()
        {
            System.Windows.Forms.MessageBox.Show(“I am a
" + 
                  "  Managed DotNET C# COM Object Dialog”);
        }
    }
}

 

10,Compile the solution.

11,You will see inside the project directory->obj->debug directory, the file “MyInterop.dll” generated after compilation.

Requirement 2:

Registration of the COM Class and Interfaces

For a COM class to be accessible by the client at runtime, the COM infrastructure must know how to locate the code that implements the COM class. COM doesn't know about .NET classes, but .NET provides a general "surrogate" DLL - mscoree.dll -- which acts as the wrapper and intermediary between the COM client and the .NET class.

  1. Hard-code a specific version number in your AssemblyVersion attribute in the AssemblyInfo.cs file which is in your project.

    Example:

    [assembly: AssemblyVersion("1.0.0.0")]
  2. Create a strong-name key pair for your assembly and point to it via the AssemblyKeyFile attribute in the AssemblyInfo.cs file which is in your project. Example:
    sn -k TestKeyPair.snk
    [assembly: AssemblyKeyFile("TestKeyPair.snk")]
  3. Add your assembly to the GAC using the following command:
    gacutil /i MyInterop.dll
  4. Register your assembly for COM by using the REGASM command along with the "/tlb" option to generate a COM type library.
    REGASM MyInterop.dll /tlb:com.MyInterop.tlb
  5. Close the C# project.

    到此COM創(chuàng)建完畢,可以被C#和Native的client調(diào)用。

三,C#內(nèi)部調(diào)用
C#對(duì)C#的COM的調(diào)用和一般的DLL的調(diào)用一樣的簡(jiǎn)單,只需要在工程中reference 所需要的COM或DLL。(Net真強(qiáng)!)

四,總結(jié)
一般使用C#開發(fā)DLL,即程序集,一般不開發(fā)COM,如果是要開發(fā)COM,一般了為了兼容以前的COM,則這個(gè)時(shí)候可以考慮把以前的COM轉(zhuǎn)化net的程序集來(lái)使用。一般C#的COM會(huì)被Native代碼來(lái)調(diào)用,具體的C++調(diào)用C#的COM見后面的章節(jié)。

參考:http://www.codeproject.com/csharp/ManagedCOM.asp  (包含上面的實(shí)例代碼下載,C# 的Client的調(diào)用很簡(jiǎn)單,自己寫?。簙)

簡(jiǎn)單實(shí)例下載:http://www.shnenglu.com/Files/mzty/C#COM.rar

posted on 2007-05-29 11:02 夢(mèng)在天涯 閱讀(6748) 評(píng)論(3)  編輯 收藏 引用 所屬分類: C#/.NET

評(píng)論

# re: C# DLL COM 2007-06-22 12:25 .net編程

非常的好  回復(fù)  更多評(píng)論   

# re: C# DLL COM 2007-10-25 13:14 king2003

C#是托管的吧.這個(gè)沒(méi)有.NET類庫(kù)能用嗎?  回復(fù)  更多評(píng)論   

# re: C# DLL COM 2007-10-25 13:17 夢(mèng)在天涯

不能!  回復(fù)  更多評(píng)論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評(píng)論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1816670
  • 排名 - 5

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              麻豆成人综合网| 亚洲国产人成综合网站| 国产一区二区三区直播精品电影| 亚洲欧美激情视频| 麻豆国产精品一区二区三区 | 欧美fxxxxxx另类| 亚洲片在线观看| 欧美日韩综合久久| 欧美一区二区三区在线视频 | 国模叶桐国产精品一区| 久久人人97超碰精品888| 最新亚洲一区| 午夜免费久久久久| 1024国产精品| 欧美香蕉大胸在线视频观看| 久久av免费一区| 亚洲精品中文字幕女同| 久久国产精品99久久久久久老狼| 亚洲福利视频专区| 欧美性猛交xxxx免费看久久久 | 亚洲高清av| 欧美日韩精品中文字幕| 午夜亚洲精品| 亚洲精品一区二区三区蜜桃久| 亚洲一区日本| 亚洲电影免费观看高清完整版在线 | 国产美女一区二区| 欧美91视频| 午夜久久久久久久久久一区二区| 欧美成人精品一区二区| 亚洲欧美另类在线观看| 亚洲黄页一区| 国产日韩欧美黄色| 欧美精品18| 久久久亚洲高清| 亚洲性色视频| 亚洲三级性片| 欧美黄色一区| 久久久久久亚洲精品杨幂换脸| 99精品黄色片免费大全| 1024国产精品| 国产欧美日韩一区二区三区在线 | 在线欧美视频| 国产欧美日韩不卡| 欧美日本视频在线| 嫩草成人www欧美| 久久精品国内一区二区三区| 一区二区三区视频在线| 亚洲国产欧美日韩| 欧美 亚欧 日韩视频在线| 欧美一区二区三区在线免费观看 | 亚洲国产精品悠悠久久琪琪| 久久男人资源视频| 欧美一区二区在线观看| 亚洲永久免费观看| 在线一区欧美| 日韩亚洲一区二区| 亚洲精品久久在线| 在线日韩一区二区| 在线观看国产一区二区| 国产综合色产在线精品| 国产午夜精品全部视频在线播放| 欧美三级中文字幕在线观看| 免费日韩av电影| 久久综合国产精品台湾中文娱乐网| 亚欧成人精品| 久久成人一区二区| 欧美一区二区在线免费观看| 午夜亚洲伦理| 欧美在线观看天堂一区二区三区| 亚洲一区二区在线观看视频| 亚洲一区二区av电影| 一区二区三区四区五区在线| 日韩一区二区福利| 99精品视频免费观看| 在线一区二区三区做爰视频网站| 一区二区三区国产精华| 亚洲婷婷免费| 午夜欧美大尺度福利影院在线看 | 久久综合色婷婷| 美女在线一区二区| 欧美激情欧美激情在线五月| 欧美欧美天天天天操| 国产精品swag| 国产亚洲综合在线| 亚洲国产激情| 一本久久精品一区二区| 亚洲午夜av电影| 欧美一区二区视频在线观看2020| 久久精选视频| 亚洲国产精品成人精品| 亚洲裸体在线观看| 午夜精品免费| 久久在精品线影院精品国产| 欧美大片国产精品| 国产精品播放| 国产一区二区三区黄视频| 亚洲第一福利社区| 在线亚洲精品| 久久一区激情| 亚洲欧洲日夜超级视频| 亚洲男人的天堂在线观看 | 开心色5月久久精品| 欧美精品一卡| 国内精品久久久久影院色| 亚洲黄色在线观看| 亚洲欧美美女| 欧美国产先锋| 亚洲综合精品四区| 卡通动漫国产精品| 国产精品久久久一区麻豆最新章节| 国内一区二区三区在线视频| 日韩天堂在线观看| 久久亚裔精品欧美| 亚洲免费福利视频| 久久久久久9| 国产精品久久久久久久久久久久久久| 国产午夜精品麻豆| 日韩午夜免费| 久久一区视频| 国产精品99久久不卡二区| 老鸭窝91久久精品色噜噜导演| 国产精品美女久久久浪潮软件| 亚洲高清资源| 久久精品欧美日韩| 一本大道久久a久久综合婷婷| 久久天天躁狠狠躁夜夜av| 国产精品免费福利| 一本色道久久88亚洲综合88| 久热精品在线视频| 午夜精品久久久久影视| 欧美色精品在线视频| 最新精品在线| 久久伊人一区二区| 亚洲欧美精品中文字幕在线| 欧美日本精品| 亚洲精品国产精品乱码不99| 久久亚洲精品欧美| 香蕉久久夜色精品国产| 国产精品久久久久99| 艳妇臀荡乳欲伦亚洲一区| 欧美国产一区二区| 久久久亚洲高清| 国产主播一区二区三区| 欧美一二三视频| 亚洲特色特黄| 欧美日韩一二三四五区| 99视频在线观看一区三区| 亚洲国产高清在线观看视频| 久久婷婷丁香| 亚洲高清视频在线| 蜜桃av噜噜一区| 久久精品在线| 伊人久久av导航| 免费精品99久久国产综合精品| 欧美一区二区三区视频在线观看 | 亚洲无线视频| 亚洲日本电影在线| 欧美激情在线有限公司| 亚洲激情成人| 亚洲国产欧美一区二区三区丁香婷| 久久久久久久久综合| 在线播放中文字幕一区| 麻豆91精品| 蜜桃av噜噜一区| 亚洲精品美女久久久久| 最新中文字幕亚洲| 欧美性猛交xxxx乱大交蜜桃| 亚洲一区中文| 午夜精品久久久久久久久久久久| 国产欧美日韩精品在线| 欧美一区二区在线观看| 欧美在线一区二区三区| 一区二区三区在线观看国产| 欧美成人小视频| 欧美精品成人91久久久久久久| 一本色道久久88精品综合| 一区二区三区 在线观看视| 国产精品视频内| 久久久国产精品一区二区三区| 久久久精品tv| 日韩亚洲综合在线| 亚洲一区二区四区| 激情自拍一区| 亚洲精品一区在线观看香蕉| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 性欧美精品高清| 欧美在线你懂的| 91久久精品日日躁夜夜躁国产| 亚洲精品四区| 国产伦精品一区二区三区照片91 | 亚洲激情一区二区| 国产精品久久久久久久久久妞妞 | 亚洲福利视频免费观看| 欧美视频中文在线看| 久久久久国产精品一区二区| 猫咪成人在线观看| 亚洲欧美制服中文字幕| 另类成人小视频在线| 亚洲免费小视频|