标题:VB.NET调用dll问题
只看楼主
shengzhao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-6-7
 问题点数:0 回复次数:1 
VB.NET调用dll问题

我用VB。net调用VC开发的动态库时出错:

头文件:
void WINAPI ICC_set_NAD(HANDLE fd,unsigned char nad);
unsigned char * WINAPI CHexToBin(
unsigned char *bin,
unsigned char *asc,
unsigned int len
);

VB声明:
Public Declare Function ICC_set_NAD Lib "wdCrwx.dll" Alias "ICC_set_NAD" (ByVal fd As IntPtr, ByVal nad As Byte)
Public Declare Function CHexToBin Lib "wdCrwx.dll" Alias "CHexToBin" (ByRef bin As StringBuilder, ByVal asc As String, ByVal len As ULong) As StringBuilder

vb调用:
ICC_set_NAD(fd, &H13)

报错:PInvoke 限制: 无法返回变量。


CHexToBin(resp, "123456", 6)
报错:对 PInvoke 函数“WindowsApplication1!WindowsApplication1.Module1::CHexToBin”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。


请教各位如何解决?

搜索更多相关主题的帖子: NET dll 
2007-06-07 09:46
ncqingchuan
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2006-8-8
得分:0 

VC中已经用void的进行了申请,说名该函数是不会有任何返回值的,那么你应该在VB.NET中应该申明为过程啊
把FUNCTION更换为SUB呢

2007-06-26 00:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-145561-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.088374 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved