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

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

C# DLL COM


前言:為了介紹C#寫界面,C++寫算法的快捷交互開發方式,首先介紹c++,C#內部的DLL,COM調用.

一, C# DLL
C#創建DLL非常的簡單,只需要創建工程,選擇工程類型為class libaray即可。這里不介紹。

二,C# COM
C#創建COM,相對與一般的DLL,有幾個地方需要注意,看下面的實例:

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創建完畢,可以被C#和Native的client調用。

三,C#內部調用
C#對C#的COM的調用和一般的DLL的調用一樣的簡單,只需要在工程中reference 所需要的COM或DLL。(Net真強!)

四,總結
一般使用C#開發DLL,即程序集,一般不開發COM,如果是要開發COM,一般了為了兼容以前的COM,則這個時候可以考慮把以前的COM轉化net的程序集來使用。一般C#的COM會被Native代碼來調用,具體的C++調用C#的COM見后面的章節。

參考:http://www.codeproject.com/csharp/ManagedCOM.asp  (包含上面的實例代碼下載,C# 的Client的調用很簡單,自己寫!:~)

簡單實例下載:http://www.shnenglu.com/Files/mzty/C#COM.rar

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

評論

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

非常的好  回復  更多評論   

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

C#是托管的吧.這個沒有.NET類庫能用嗎?  回復  更多評論   

# re: C# DLL COM 2007-10-25 13:17 夢在天涯

不能!  回復  更多評論   

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1811742
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              久久久另类综合| 久热精品视频在线观看| 在线欧美一区| 国产在线精品一区二区夜色| 国产欧美亚洲日本| 国产精品久久久久久久久借妻 | 亚洲裸体视频| 亚洲伦理在线观看| 亚洲人体一区| 亚洲国内自拍| 午夜久久福利| 免费成人av在线看| 国产日产亚洲精品| 亚洲二区免费| 亚洲欧美日韩天堂| 亚洲国产精品999| 国产精品99久久久久久久久久久久| 一本色道久久综合亚洲精品不卡| 性高湖久久久久久久久| 亚洲精品一区二区三区婷婷月 | 欧美三级视频在线| 亚洲国产精品国自产拍av秋霞| 亚洲欧洲日本在线| 久久国产精品久久精品国产| 亚洲国产日韩欧美综合久久| 亚洲欧美春色| 欧美午夜欧美| 亚欧美中日韩视频| 99亚洲一区二区| 另类激情亚洲| 国产真实乱子伦精品视频| 国产精品99久久久久久www| 亚洲第一天堂av| 久久婷婷久久一区二区三区| 国产一区二区中文字幕免费看| 亚洲自拍偷拍福利| 亚洲欧美电影在线观看| 国产日产精品一区二区三区四区的观看方式 | 亚洲国产精选| 欧美v日韩v国产v| 在线一区二区三区做爰视频网站| 欧美成年人在线观看| 欧美成人日本| 亚洲香蕉网站| 欧美一区日韩一区| 亚洲精品一区二区三区在线观看| 男男成人高潮片免费网站| 欧美高清视频www夜色资源网| 亚洲激情女人| 亚洲午夜一区| 伊人成人在线| 一本色道久久综合亚洲精品婷婷| 欧美体内she精视频在线观看| 久久国产免费看| 亚洲三级免费观看| 欧美一级专区免费大片| 亚洲国产日韩在线一区模特| 亚洲全黄一级网站| 国产精品大片wwwwww| 最新中文字幕一区二区三区| 欧美日韩伦理在线免费| 美女主播视频一区| 欧美日韩国产精品一卡| 久久久久九九视频| 国产亚洲免费的视频看| 一本色道久久综合一区| 亚洲精品久久久久中文字幕欢迎你| 中日韩在线视频| 亚洲在线免费| 欧美日韩国产不卡| 亚洲国产高清一区二区三区| 一区二区在线免费观看| 久久久精品久久久久| 欧美在线综合| 黄色在线一区| 欧美国产日韩xxxxx| 亚洲国产日韩欧美在线动漫| 亚洲国产一区二区精品专区| 性色一区二区三区| 欧美一区二区三区在线观看视频 | 亚洲男人影院| 久久久久久网址| 亚洲精品国产品国语在线app| 男女av一区三区二区色多| 国产精品地址| 久久欧美中文字幕| 亚洲人成77777在线观看网| 99国产麻豆精品| 国产欧美高清| 欧美女主播在线| 久久久久久久一区| 99精品欧美一区二区三区| 香港久久久电影| 亚洲国产99| 欧美视频在线观看一区| 久久久久久黄| 欧美在线观看视频| 亚洲精品乱码久久久久久日本蜜臀| 亚洲字幕一区二区| 亚洲精选91| 永久免费毛片在线播放不卡| 国产精品捆绑调教| 欧美日韩精品三区| 免费观看成人| 久久野战av| 久久久久久久久久看片| 午夜精品久久久久久久久久久久| 91久久精品国产91久久| 久久视频在线免费观看| 久久亚洲一区二区三区四区| 亚洲在线视频| 欧美亚洲日本国产| 亚洲欧美日韩爽爽影院| 欧美中文在线视频| 久久动漫亚洲| 麻豆九一精品爱看视频在线观看免费| 午夜精品理论片| 性久久久久久久久| 久久久www| 亚洲国产精品久久久久婷婷884| 亚洲精品影院| 欧美一区二区三区免费视| 欧美一区二区在线免费观看| 久久久久久尹人网香蕉| 免费一级欧美片在线观看| 欧美视频1区| 国内成+人亚洲| 99热免费精品在线观看| 久久久福利视频| 亚洲二区在线观看| 欧美一区二区三区男人的天堂 | 欧美激情视频给我| 国产精品免费网站| 亚洲国产色一区| 久久本道综合色狠狠五月| 欧美大片在线观看| 久久精品理论片| 欧美体内she精视频| 亚洲片在线资源| 久久久www成人免费精品| 99re8这里有精品热视频免费| 亚洲国产你懂的| 蜜桃久久av| 久久躁日日躁aaaaxxxx| 国产精品久在线观看| 亚洲一区日韩在线| 最新日韩中文字幕| 欧美国产三区| 亚洲图色在线| 亚洲视频香蕉人妖| 欧美午夜片在线观看| 亚欧美中日韩视频| 亚洲一区免费视频| 国产亚洲一级高清| 久久伊人亚洲| 欧美了一区在线观看| 一级成人国产| 欧美专区第一页| 亚洲精选在线观看| 一区二区三区久久| 狠狠干综合网| 亚洲欧洲午夜| 精品福利电影| 亚洲日韩中文字幕在线播放| 国产精品久久国产精品99gif | 欧美激情第五页| 欧美日韩一区在线播放| 久久精品九九| 欧美日韩色一区| 久久女同精品一区二区| 欧美国产激情| 久久综合精品一区| 国产精品jizz在线观看美国 | 欧美精品一区二区蜜臀亚洲| 亚洲综合不卡| 欧美大胆人体视频| 久久综合电影一区| 欧美日韩视频第一区| 欧美成人首页| 亚洲福利视频二区| 欧美一区二区在线播放| 午夜精品久久久久久久99水蜜桃| 欧美国产视频在线| 免费日韩av| 在线播放不卡| 久久国产直播| 久久午夜色播影院免费高清| 国产女人18毛片水18精品| 亚洲一区二区三区在线看| 午夜精品www| 国产欧美在线播放| 欧美一区二区三区在线看 | 久久久久久久久一区二区| 久久精品免费播放| 国产乱肥老妇国产一区二| 性欧美办公室18xxxxhd| 久久综合精品一区| 亚洲美女一区| 欧美亚洲第一区| 午夜性色一区二区三区免费视频|