在非托管的 VC++2005 中调用托管的 C# DLL 文件

sgnaw(李逍遥) 2006-12-20

此文介绍如何在非托管的 VC++2005 中调用托管的 C# DLL 文件 .

编写托管的 C# DLL 文件
1. 先要写一个 C# 程序,如下所示: 

using  System;

namespace  HelloUtil
{
    
public class Echo
    
{
        
string myString;

        
public Echo(string aString)
        
{
            myString 
= aString;
        }


        
public void Tell()
        
{
            Console.WriteLine(myString);
        }

    }

}

2.编译成 DLL 文件
从开始菜单中找到"Visual Studio 2005 命令提示"并打开它, 在其中输入命令
csc /nologo /t:library /out:echo.dll echo.cs
即可编译出 echo.dll 文件.

在 VC++2005 中调用
1. 新建工程
在 VC++2005 中新建一个 "Win32 控制台应用程序" 的工程,在向导中把"预编译头"前面的勾去掉,即不使用预编译头, 完成向导. 在这里,我新建的工程名为 MyNet

2.让工程支持 CLR
项目 -> 属性 -> 配置属性 -> 常规 -> 公共语言运行库支持
选择"公共语言运行库支持(/clr)"

3.默认使用非托管的方式
在 stdafx.h 文件中最后一行输入
#pragma unmanaged

4. 主要源程序

/* -------------------------------------
MyNet.cpp  -- Unmanaged C++ code calling Managed C# DLL File
(C) Wang Guofan 2006-12-20
------------------------------------- 
*/

#include 
" stdafx.h "

#include 
< comdef.h >
#
using   < System.dll >
using   namespace  System;

#
using   " echo.dll "
#pragma  managed
int  abc()
{
    System::String 
^str = "Hello my 1st C# object !";

    HelloUtil::Echo 
^= gcnew HelloUtil::Echo(str);
    h
->Tell();
    
return 0;
}


#pragma  unmanaged
int  _tmain( int  argc, _TCHAR *  argv[])
{
    abc();
    
return 0;
}

5. 编译
把编译好的 C# DLL 文件 copy 到 MyNet 工程目录中,编译,应该可以顺利通过,生成一个 MyNet.exe 文件。
注意: 由于程序中我引用 dll 是用 #using "echo.dll" , 因此要把 C# DLL 文件 copy 到 MyNet.exe 所在的目录里,这一步要看清楚,否则,会运行不了。
6. 运行
在 _tmain 里的 return 0 那儿设置一个断点,再按 F5 调试运行,将会在 Command 窗口里看到调用 C# DLL 后的结果:
Hello my 1st C# object !

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值