当前位置: 代码迷 >> VB Dotnet >> VB.NET调用C#写的DLL,该怎么处理
  详细解决方案

VB.NET调用C#写的DLL,该怎么处理

热度:674   发布时间:2016-04-25 01:59:22.0
VB.NET调用C#写的DLL
在网上查找了很多,没有一个很好的DEMO,而且各种说法,有的说.NET平台可以直接引用,不同的语言,语法格式都不一样这个说法很扯淡,还有的说要包成COM注册后才能调用,那要是换到其他的电脑怎么使用,微软这么多低层DLL文件调用,应该有比较通用的调用方法,本人小白,折腾了两天没能解决,麻烦大家给个思路!谢谢!

测试CODE

C#  DLL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace DemoCom
{
    public class ComTest
    {
        public String  getSum(String str1, String str2)
        {
            return str1 + str2;
        }
    }
}

VB.NET  调用
Imports System
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.IO.Ports
'<Out()> 
Public Class Form1

    <DllImport("DemoCom.dll", EntryPoint:="getSum")>
    Public Shared Function getSum(ByVal inputData As String, ByVal outputData As String) As Integer
    End Function

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Try
            Dim inputdata As String = "zzq"
            Dim outputdata As String = "lhh"
            Dim result As String = ""
            result = getSum(inputdata, outputdata)
            TextBox1.Text = (result)
        Catch ex As Exception
            TextBox2.Text = (ex.ToString())
        End Try
    End Sub
End Class

最后显示System.EntryPointNotFoundException: Unable to find an entry point named 'getSum' in DLL 'DemoCom.dll'.
   at WindowsAppDLLTest.Form1.getSum(String inputData, String outputData)
   at WindowsAppDLLTest.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\alion.zhou.CHROMA\Desktop\DLLTest\WindowsAppDLLTest\WindowsAppDLLTest


找不到DLL文件中的getSum函数,我在网上看到的这种调用,好像不能,麻烦大神指点!

------解决思路----------------------
我都是vb.net调c#,c#调vb.net都可以啊
------解决思路----------------------
直接用就可以,都是被转化成IL的
------解决思路----------------------
在网上查找了很多,没有一个很好的DEMO,而且各种说法,有的说.NET平台可以直接引用,不同的语言,语法格式都不一样这个说法很扯淡

额,基础啊。你首先应该知道什么是net框架,什么是clr。如果说我现在可以用net框架直接写个java语言的东东靠谱不(实际很多年前就有了叫做J#)

好了废话不扯了,那个你觉着很扯淡滴说法就是正解,因为他们都是一个clr,C#编译出来滴dll也用滴是一个“中间态”语法,名叫MSIL
------解决思路----------------------
引用:
直接用什么意思?我说的是使用C#创建一个类库(DLL),并用VB.NET去调用DLL,可以直接调用吗?就是添加引用吗?可以直接调用getSum函数吗?


对,绝对正确。当然你除了添加引用,还的在使用前在代码里 “using C#里那个类的命名空间”
  相关解决方案