请教关于调用dll的问题

baozj 2006-04-21 03:03:46
向大家请教一个问题,我现在有一个dll,不知道用什么写的,但是知道他的一个方法,我要调用它,我用的是vb。net,winform调用。本来我是想直接在引用中添加引用,但是不让我添加,请问具体应该怎么做?这个dll是好的,我在delphi中成功调用了
...全文
337 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ninputer 2006-04-21
  • 打赏
  • 举报
回复
你写对了吗,应该是

Public Declare Function CalcBillMac Lib "CalculateBillMac.dll" (ByVal str As String) As Double
zhaoliang_chen 2006-04-21
  • 打赏
  • 举报
回复
DllImport[]
Ninputer 2006-04-21
  • 打赏
  • 举报
回复
我预感你还没有完全解决……但愿我猜错了
Ninputer 2006-04-21
  • 打赏
  • 举报
回复
我晕,刚才就想问你,DLL中的函数很少返回String的
copico 2006-04-21
  • 打赏
  • 举报
回复
.......................
Ninputer 2006-04-21
  • 打赏
  • 举报
回复
这样写是没用的,把Delphi中调用和声明的代码或者C原型贴出来,一下就能解决了
baozj 2006-04-21
  • 打赏
  • 举报
回复
晕,我找到原因了,这个函数返回的是integer类型,我写成了string,郁闷阿!!!!!
谢谢大家了,马上给分~~:)
copico 2006-04-21
  • 打赏
  • 举报
回复
str_text= new string(chr(0),128)'不知道你的dll要多少空间
copico 2006-04-21
  • 打赏
  • 举报
回复
Dim Str_test, XX As String
str_text=string(chr(0),128)'不知道你的dll要多少空间
Str_test = "abcd1234"
Try
XX = Me.CalcBillMac(Str_test)

Me.TextBox3.Text = XX
Catch ex As Exception
Throw ex
End Try
baozj 2006-04-21
  • 打赏
  • 举报
回复
XX = Me.CalcBillMac(Str_test) 报错

按他的错误“未将对象引用设置到对象的实例”,应该是没有分配空间,可我怎么看我的代码好像分配了的阿
Ninputer 2006-04-21
  • 打赏
  • 举报
回复
未处理的“System.NullReferenceException”类型的异常出现在 LJF.exe 中。
这表明函数正在试图写非法内存,一般是你的Declare语句写的不对造成的

你一定要找到一个某种语言写的成功调用的例子,或者C/C++原型给我
copico 2006-04-21
  • 打赏
  • 举报
回复
它在哪行代码报错啊

这个错误应该是你哪里需要分配空间而没有分配
Ninputer 2006-04-21
  • 打赏
  • 举报
回复
你的DLL函数的C原型是什么?在Delphi中成功调用的代码有吗?
baozj 2006-04-21
  • 打赏
  • 举报
回复
to copico(学好.NET,天天进步):改了还是不行
copico 2006-04-21
  • 打赏
  • 举报
回复
Public Declare Function CalcBillMac Lib "CalculateBillMac.dll" (Byref str As String) As String
改成这样试试
baozj 2006-04-21
  • 打赏
  • 举报
回复
我在bin和system32里面都拷了的
baozj 2006-04-21
  • 打赏
  • 举报
回复
我的代码是这样的
Public Declare Function CalcBillMac Lib "CalculateBillMac.dll" (ByVal str As String) As String

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim Str_test, XX As String
Str_test = "abcd1234"
Try
XX = Me.CalcBillMac(Str_test)

Me.TextBox3.Text = XX
Catch ex As Exception
Throw ex
End Try


End Sub
naturalth 2006-04-21
  • 打赏
  • 举报
回复

是com组件么?
你把他拷贝到运行目录下试过么?
baozj 2006-04-21
  • 打赏
  • 举报
回复
这样用了报错
未处理的“System.NullReferenceException”类型的异常出现在 LJF.exe 中。

其他信息: 未将对象引用设置到对象的实例。
copico 2006-04-21
  • 打赏
  • 举报
回复
把dll放在system32目录里
然后这样
Public Declare Function showItem Lib "abc.dll" (ByVal nMode As Long) As Integer
这个显示的是abc.dll里的一相showItem函数


16,555

社区成员

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

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