zoukankan      html  css  js  c++  java
  • 使用C#生成dll并用C++调用dll

    上回说到用telnet的类做了一个wpf的程序,这回我需要做一个dll,当然是没有界面的,里面只有很简单的一个函数PuttyShow(int ID)。

    开始的工作都是一样一样的:

    一、如何使用c#创建一个dll文件:

    1.首先创建一个新类库工程文件

       File->New->Project->Visual C# Projects->Class Library。填入工程文件名称,并且选择文件要存放的目录。  
    2.引用telnet.dll,并把telnet需要的三个cs文件包含进来,我的做法是把这三个cs文件和telnet.dll一起放在一个叫telnet的文件夹,直接拖进我们现在这个工程,连引用都省了。然后在class1中编写代码:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Telnet;
    
    
    namespace TelnetClass
    {
        public class Class1
        {
            public void PuttyShow(int ID)
            {
    
                string f = null;
                Terminal tn = new Terminal("192.168.235.10", 23, 10, 80, 40); // hostname, port, timeout [s], width, height
                tn.Connect(); // physcial connection
                do
                {
                    f = tn.WaitForString("login");   //this word will change with your service
                    if (f == null)
                        throw new TerminalException("No password prompt found");
                    //Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());
                    tn.SendResponse("shrcwcyy\n", true);    // send username
                    //                tn.SendResponse(Console.ReadLine(), true);    // input username
                    System.Threading.Thread.Sleep(1000);      //pause 1s       
                    //              Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());   
                    tn.SendResponse("sh45wc67\n", true);    // send password
                    System.Threading.Thread.Sleep(2000);
                    tn.SendResponse("cd mimo_s\n", true);
                    System.Threading.Thread.Sleep(1000);      //pause 1s  
                    if ( 1 == ID )
                    {
                       tn.SendResponse("bsub lsf.run\n", true);
                    }
                    if ( 2 == ID )
                    {
                        tn.SendResponse("bsub lsf.run\n", true);
                    }
                    if ( 3 == ID )
                    {
                        tn.SendResponse("bsub lsf.run\n", true);
                    }
                    System.Threading.Thread.Sleep(1000);      //pause 1s
    
                    //Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());
                    //System.Threading.Thread.Sleep(1000);
    
                    //textBlock1.Text = tn.VirtualScreen.Hardcopy().TrimEnd();   //send output to textblock
                    //                  tn.SendResponse("bjobs\n", true);    // send password
                    //                  Console.WriteLine(tn.VirtualScreen.Hardcopy().TrimEnd());
                    //                  System.Threading.Thread.Sleep(1000);
                } while (false);
            }
        }
    }

    3.点击项目名称-》属性,查看命名空间,.net版本的信息,一般不用更改,确认后,点build。 

      生成的组件会在工程文件的bin\debug目录里,文件扩展名是dll。感觉非常强大,我们的这个dll相当于包含了原来telnet的那个dll和那三个cs文件!
     
    二、如何使用C++调用C#的dll
    C#调用C#写的dll很简单,在使用telnet类库的时候我们就做过。下面说说怎么样用C++调用。
     
  • 相关阅读:
    poj 3254 Corn Fields (状态压缩dp)
    poj 2479 Maximum sum(求最大子段和的延伸)
    poj 1185 炮兵阵地 (状态压缩dp)
    poj 1011 hdoj 1455 Sticks(搜索+剪枝)
    light oj 1255 Substring Frequency (KMP)
    codeforces 272C. Dima and Staircase(线段树)
    hdoj 1176免费馅饼(dp)
    求最大连续子段和 的 dp算法
    light oj 1258 Making Huge Palindromes(KMP)
    实战 | UI 调度自动化测试平台(基于 Python)
  • 原文地址:https://www.cnblogs.com/xlw1219/p/2879619.html
Copyright © 2011-2022 走看看