使用C#生成dll并用C++调用dll
2013-01-28 11:22
645 查看
上回说到用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中编写代码:
3.点击项目名称-》属性,查看命名空间,.net版本的信息,一般不用更改,确认后,点build。
生成的组件会在工程文件的bin\debug目录里,文件扩展名是dll。感觉非常强大,我们的这个dll相当于包含了原来telnet的那个dll和那三个cs文件!
二、如何使用C++调用C#的dll
C#调用C#写的dll很简单,在使用telnet类库的时候我们就做过。下面说说怎么样用C++调用。
开始的工作都是一样一样的:
一、如何使用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++调用。
相关文章推荐
- C#调用C++生成的Dll库,Dll使用callback向C#传递指针
- PB8调用使用C++与C#分别编写生成解压缩带有密码的zip压缩文件的动态链接库dll(部分内容转自互联网)
- c#中使用相对路径调用c++的dll
- Unity3D中使用C#调用C++编写的DLL
- C# 调用C++工程生成的DLL
- 怎么使用C#调用C++ dll 类库
- C#调用C++生成的dll,参数有结构体数组
- C#中使用OpenGL:(二)C#调用C/C++的dll
- 【C#学习笔记】调用C++生成的DLL
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在C#调用C++的DLL方法(二)生成托管的DLL
- vs2010下C++调用DLL以及怎么生成DLL和为什么使用DLL
- C#调用C++生成的dll获取CPU序列号(一)
- C#调用使用C++\CLI封装的标准C++ DLL问题:无法访问受保护的内存,这通常指示其他内存已损坏
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
- 在C#调用C++的DLL方法(一)生成非托管dll
- C++调用C#生成的dll
- C++与C# 分别调用C++生成的DLL
- windows中使用C# 调用 C语言生成的dll
- 用VS2008生成C++代码的dll及在C#中的调用及常见的类型转换