vb.net用DllImport调用外部dll,的写法

lutaiyk 2010-02-22 07:39:51
extern "C" __declspec(dllexport) int SendShortMessage(char *Number, int NumberLen, char *Message, int MessageLen)
这个是Dll中的function。

我是这样在vb.net中调用的
<DllImport("SMS.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> Private Shared Function SendShortMessage(ByVal Fnumber() As Char, ByVal NumberLen As Integer, ByVal FMessage() As Char, ByVal MessageLen As Integer) As Integer

<DllImport("SMS.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> Private Shared Function SendShortMessage(ByVal Fnumber As String, ByVal NumberLen As Integer, ByVal FMessage As String, ByVal MessageLen As Integer) As Integer

用这两种方法都可以调用,但是number好像就不能正确的得到,请问该怎么写?

多谢指教!
...全文
1644 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2010-02-22
  • 打赏
  • 举报
回复
你要先确定Number和Message是输入参数还是输出参数,如果是输入,用String即可;如果是输出,则用StringBuilder,并给出足够的长度(NumberLen、MessageLen参数),这两个参数用Integer没错。
wild_wolf99 2010-02-22
  • 打赏
  • 举报
回复
引用 1 楼 lost_painting 的回复:
VB.NET codeDeclareFunction SendShortMessageLib"SMS.dll"Alias"SendShortMessage" (ByVal FnumberAs StringBuilder,ByVal NumberLenAsInteger,ByVal FMessageAs StringBuilder,ByVal MessageLenAsInteger)AsIntege?-

这样写没问题,和在VB6中的写法一样的
lutaiyk 2010-02-22
  • 打赏
  • 举报
回复
没有抱错,但出不来结果
鸭梨山大帝 2010-02-22
  • 打赏
  • 举报
回复
一样的调用
只是需要多申明两个StringBuilder.
lutaiyk 2010-02-22
  • 打赏
  • 举报
回复
我觉得问题是出在char *Number这个参数的地方,ByVal NumberLen As Integer可能没问题


Lost_Painting,添加Imports System.Text; 是不报错了
可是我应该怎样调用那?
下面是我原来的调用方式。
Dim aa1 As String

Dim bb
aa1 = TextBox2.Text

Label1.Text = SendShortMessage("13920002000", 11, aa1, aa1.Length)
鸭梨山大帝 2010-02-22
  • 打赏
  • 举报
回复
Imports System.Text;

如果Imports了,还报错,贴出一下错误提示
wuyq11 2010-02-22
  • 打赏
  • 举报
回复
lzsh0622 2010-02-22
  • 打赏
  • 举报
回复

试试:

ByVal NumberLen As Integer --> ByVal NumberLen As Int16
ByVal MessageLen As Integer --> ByVal MessageLen As Int16

As Integer --> As Int16
lutaiyk 2010-02-22
  • 打赏
  • 举报
回复
用您的办法StringBuilder 报错
鸭梨山大帝 2010-02-22
  • 打赏
  • 举报
回复

Declare Function SendShortMessage Lib "SMS.dll" Alias "SendShortMessage" (ByVal Fnumber As StringBuilder, ByVal NumberLen As Integer, ByVal FMessage As StringBuilder, ByVal MessageLen As Integer) As Integer

16,722

社区成员

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

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