<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Tmouse·方枪枪</title><subtitle type="text">为者常成，行者常至</subtitle><id>http://feed.cnblogs.com/blog/u/4018/rss</id><updated>2010-05-28T01:26:20Z</updated><author><name>Tmouse</name><uri>http://www.cnblogs.com/Tmouse/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Tmouse/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/4018/rss"/><entry><id>http://www.cnblogs.com/Tmouse/archive/2010/04/15/1712819.html</id><title type="text">转：C# .NET中调用VB编写的DLL代码事例（我做了些修改）</title><summary type="text">转自:http://www.taotechinfo.com/collect/2010222/n68565463.html.NET中如何调用VB6编写的DLL。 　　本文以C#为例，自己实践了一下。希望对遇到相关问题的人有所帮助。　　本示例分成两部分，第一，生成vb的dll。第二，在C#中进行调用。　　第一部分：　　1.首先在VB中选择ACTIVX DLL工程类型。如图：　　　　2.然后修改工程名，...</summary><published>2010-04-15T09:13:00Z</published><updated>2010-04-15T09:13:00Z</updated><author><name>Tmouse</name><uri>http://www.cnblogs.com/Tmouse/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Tmouse/archive/2010/04/15/1712819.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Tmouse/archive/2010/04/15/1712819.html"/><content type="html">&lt;div&gt;转自:&lt;a href="http://www.taotechinfo.com/collect/2010222/n68565463.html" target="_blank"&gt;http://www.taotechinfo.com/collect/2010222/n68565463.html&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;.NET中如何调用VB6编写的DLL。 &#xD;
&lt;p&gt;本文以C#为例，自己实践了一下。希望对遇到相关问题的人有所帮助。&lt;/p&gt;&#xD;
&lt;p&gt;本示例分成两部分，第一，生成vb的dll。第二，在C#中进行调用。&lt;/p&gt;&#xD;
&lt;p&gt;第一部分：&lt;/p&gt;&#xD;
&lt;p&gt;1.首先在VB中选择ACTIVX DLL工程类型。如图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535453160.jpg" width="461" height="407" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.然后修改工程名，class文件名，添加2个函数，如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535625020.jpg" width="610" height="394" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;方便copy，代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;Public Function FncTestDLLForDotNet(instr As String) As Integer&lt;/p&gt;&#xD;
&lt;p&gt;FncTestDLLForDotNet = 9&lt;/p&gt;&#xD;
&lt;p&gt;End Function&lt;/p&gt;&#xD;
&lt;p&gt;Public Function FncTestDLLForDotNet2(instr As String) As Integer&lt;/p&gt;&#xD;
&lt;p&gt;FncTestDLLForDotNet2 = 99&lt;/p&gt;&#xD;
&lt;p&gt;End Function&lt;/p&gt;&#xD;
&lt;p&gt;3.然后从文件菜单中选择生成TestDLLProject1.dll，即可生成DLL。&lt;/p&gt;&#xD;
&lt;p&gt;下面为第二部分：&lt;/p&gt;&#xD;
&lt;p&gt;1.打开vs2005，选用语言c#,工程类型为一个window application即可。&lt;/p&gt;&#xD;
&lt;p&gt;在form上添加一个按钮。如下图:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535750070.jpg" width="319" height="313" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong style="color: red"&gt;我加的：&amp;nbsp;把TestDLLProject1.dll拷贝到System32文件夹下&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2.在解决方案资源管理器中，右键点引用，在弹出的对话框中选择浏览，&lt;span style="color: red"&gt;&lt;strong&gt;找到System32里的TestDLLProject1.dll，选中它，点确定。&lt;/strong&gt;&lt;/span&gt;即可加入到引用中。如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535781260.jpg" width="482" height="351" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;添加完后，会看到在引用中已经增加了对这个dll的引用，如图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535828150.jpg" width="218" height="360" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3，最后一步了编写按钮的代码，来调用这个vb的dll中的方法。&lt;/p&gt;&#xD;
&lt;p&gt;双击form上的button，在button的click事件中加入如下代码：&lt;/p&gt;&#xD;
&lt;p&gt;TestDLLProject1.TestClass1 tc = new TestDLLProject1.TestClass1();&lt;/p&gt;&#xD;
&lt;p&gt;string ss = "kkkk";&lt;/p&gt;&#xD;
&lt;p&gt;int i = tc.FncTestDLLForDotNet(ref ss);&lt;/p&gt;&#xD;
&lt;p&gt;int i2 = tc.FncTestDLLForDotNet2(ref ss);&lt;/p&gt;&#xD;
&lt;p&gt;MessageBox.Show(i.ToString() + " " + i2.ToString());&lt;/p&gt;&#xD;
&lt;p&gt;好，按ctrl+shift+b，编译工程，再按f5运行，点击按钮，如下图,成功弹出结果。&lt;/p&gt;&#xD;
&lt;p&gt;如图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535859340.jpg" width="300" height="300" /&gt;&lt;img border="0" alt="" src="http://www.taotechinfo.com/collect/2010222/tmpImg/20100222004535890640.jpg" width="104" height="100" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;&lt;strong&gt;&amp;nbsp;如果要移植到其他计算机上，需要把TestDLLProject1.dll复制到该机的System32文件夹下，并在&amp;#8220;运行&amp;#8221;中使用regsvr32 TestDLLProject1.dll这条命令来注册该组件（可能有的组件不需要注册吧），才能成功移植到其他计算机。否则会报错&amp;#8220;检索COM类工厂中CLSID为{ 一串字符 } 的组件时失败，原因是出现以下错误：80040154&amp;#8221;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/Tmouse/aggbug/1712819.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Tmouse/archive/2010/04/15/1712819.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
