VB.NET调用C#写的DLL

逆鳞92 2015-10-16 11:25:50
在网上查找了很多,没有一个很好的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函数,我在网上看到的这种调用,好像不能,麻烦大神指点!
...全文
1950 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mystery1000 2019-04-18
  • 打赏
  • 举报
回复
两者没有区别 ,这是一种语言
numbermax 2019-03-24
  • 打赏
  • 举报
回复
你需要看c#的编译规则,看看编译出来的函数名生成规则。 如果declare auto 解决不了,那就必须知道编译出来的函数名。
战斗汪汪 2019-03-18
  • 打赏
  • 举报
回复
提问题也不说版本,回答问题也不看版本。 问:我的确实不可以啊 答:我的就可以啊。。。。 网上搜的那个方法要.net2.0 以上的
ZHUHUI666666 2019-01-17
  • 打赏
  • 举报
回复
请问楼主这个问题你怎么解决的,能麻烦您告知一下,还有一个问题就是我的C#项目里面引入第三方组件的dll,这个项目再生成dll供VB.NET调用,原来的dll还有作用吗
guolianghu 2017-09-18
  • 打赏
  • 举报
回复
C#编写的类库通过接口对外开发,从vb.net的对象浏览器中,引用的库都是通过接口调用的。
wjq 2015-10-16
  • 打赏
  • 举报
回复
首先回答你,直接调用!!!! 然后针对lz的那句:不同的语言,语法格式都不一样这个说法很扯淡 我想到了另一句话:性别都不同,怎么可能谈恋爱?!
逆鳞92 2015-10-16
  • 打赏
  • 举报
回复
引用 6 楼 zzqllh 的回复:
[quote=引用 3 楼 wanghui0380 的回复:] 在网上查找了很多,没有一个很好的DEMO,而且各种说法,有的说.NET平台可以直接引用,不同的语言,语法格式都不一样这个说法很扯淡 额,基础啊。你首先应该知道什么是net框架,什么是clr。如果说我现在可以用net框架直接写个java语言的东东靠谱不(实际很多年前就有了叫做J#) 好了废话不扯了,那个你觉着很扯淡滴说法就是正解,因为他们都是一个clr,C#编译出来滴dll也用滴是一个“中间态”语法,名叫MSIL
引用 5 楼 wanghui0380 的回复:
[quote=引用 4 楼 zzqllh 的回复:] 直接用什么意思?我说的是使用C#创建一个类库(DLL),并用VB.NET去调用DLL,可以直接调用吗?就是添加引用吗?可以直接调用getSum函数吗?
对,绝对正确。当然你除了添加引用,还的在使用前在代码里 “using C#里那个类的命名空间”[/quote] 解决了,刚开始我用C#调用C#写的类库,可以,后来想用其他不同的语言之间尝试相互调用,看网上很多说的很麻烦,还有反编译,原来方向没对,谢谢!刚接触.NET一个星期,很多基础原理都不懂,谢谢指导![/quote] 前辈,学习.NET 能给小弟推荐两本书吗?目前正在公司实习!谢谢啦!
逆鳞92 2015-10-16
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
在网上查找了很多,没有一个很好的DEMO,而且各种说法,有的说.NET平台可以直接引用,不同的语言,语法格式都不一样这个说法很扯淡 额,基础啊。你首先应该知道什么是net框架,什么是clr。如果说我现在可以用net框架直接写个java语言的东东靠谱不(实际很多年前就有了叫做J#) 好了废话不扯了,那个你觉着很扯淡滴说法就是正解,因为他们都是一个clr,C#编译出来滴dll也用滴是一个“中间态”语法,名叫MSIL
引用 5 楼 wanghui0380 的回复:
[quote=引用 4 楼 zzqllh 的回复:] 直接用什么意思?我说的是使用C#创建一个类库(DLL),并用VB.NET去调用DLL,可以直接调用吗?就是添加引用吗?可以直接调用getSum函数吗?
对,绝对正确。当然你除了添加引用,还的在使用前在代码里 “using C#里那个类的命名空间”[/quote] 解决了,刚开始我用C#调用C#写的类库,可以,后来想用其他不同的语言之间尝试相互调用,看网上很多说的很麻烦,还有反编译,原来方向没对,谢谢!刚接触.NET一个星期,很多基础原理都不懂,谢谢指导!
wanghui0380 2015-10-16
  • 打赏
  • 举报
回复
引用 4 楼 zzqllh 的回复:
直接用什么意思?我说的是使用C#创建一个类库(DLL),并用VB.NET去调用DLL,可以直接调用吗?就是添加引用吗?可以直接调用getSum函数吗?
对,绝对正确。当然你除了添加引用,还的在使用前在代码里 “using C#里那个类的命名空间”
逆鳞92 2015-10-16
  • 打赏
  • 举报
回复
直接用什么意思?我说的是使用C#创建一个类库(DLL),并用VB.NET去调用DLL,可以直接调用吗?就是添加引用吗?可以直接调用getSum函数吗?
wanghui0380 2015-10-16
  • 打赏
  • 举报
回复
在网上查找了很多,没有一个很好的DEMO,而且各种说法,有的说.NET平台可以直接引用,不同的语言,语法格式都不一样这个说法很扯淡 额,基础啊。你首先应该知道什么是net框架,什么是clr。如果说我现在可以用net框架直接写个java语言的东东靠谱不(实际很多年前就有了叫做J#) 好了废话不扯了,那个你觉着很扯淡滴说法就是正解,因为他们都是一个clr,C#编译出来滴dll也用滴是一个“中间态”语法,名叫MSIL
  • 打赏
  • 举报
回复
直接用就可以,都是被转化成IL的
xxxuan 2015-10-16
  • 打赏
  • 举报
回复
我都是vb.net调c#,c#调vb.net都可以啊

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧