关于VB使用VC所写的DLL问题

浩子 2003-09-26 01:30:18
现在手头有一个任务,有一些的东西需要用C语言来写方便一点,

我想把这些写成DLL函数库,然后用VB来调用,但我试了以后,

有一些的数据类型对应不起来,老是出现调用约定错误,真是郁闷,

哪位大哥可否提供一份相关的例解说明,尤其是数据类型的对应问题。

真诚感谢!
...全文
26 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩子 2003-09-27
  • 打赏
  • 举报
回复
谢谢闲人兄,这个问题已经解决^0^,下次再来讨教~~~!
hbx19720513 2003-09-26
  • 打赏
  • 举报
回复
使用VC的VARIANT类型
jlum99 2003-09-26
  • 打赏
  • 举报
回复
调用的时候自然是另一种了,VB没有指针,当调用时传入byte数组的首地址就可以了
浩子 2003-09-26
  • 打赏
  • 举报
回复
这个函数我是用来进行校验的,实际上就是CRC16位校验算法,每一个参数在VB中我是希望传入一个要校验的字符数组,如果写成long型,那就进行不了了。。。

下面是CRC16的原代码,如果我要校验,在VB中应该如何写呢?

请多帮忙,小弟很急:P

#include "stdafx.h"
#include "stdio.h"

unsigned int CRC16(unsigned char *ptr,unsigned char len)
{
unsigned int crc=0;
unsigned char ch;
unsigned int tmp;
int i;
while(len--)
{
ch=*ptr++;
for (i=0;i<8;i++,ch<<=1)
{
tmp=crc&0x8000;
crc<<=1;
if (ch&0x80) crc++;
if (tmp) crc^=0x1021;
}
}
return(crc);
}

main()
{
unsigned short c1,c2;
unsigned char data[65]={0x11,0x11,0x21,0x21};
data[4]=0x00;
data[5]=0x00;
c1=CRC16(data,6);
data[4]=c1>>8;
data[5]=c1;
printf("\n%x,%x\n",data[4],data[5]);
c2=CRC16(data,6);

printf("\n%x,%x",c1,c2);

}
aha99 2003-09-26
  • 打赏
  • 举报
回复
up...
好像这样的问题,用过api的都遇到过。好像没有什么好办法,只能是按照楼上说的,好好检查一下是不是调用的有问题。实在不行的就用指针传递一些 struct ,就是更麻烦一些。
jlum99 2003-09-26
  • 打赏
  • 举报
回复
第一个是个型参 指针 ,指针就是32位的地址,用long ,后一个是个ascii字符,ascii字符就是8位啊,用byte就好.这下明白了吧?
jlum99 2003-09-26
  • 打赏
  • 举报
回复
我的意思是,不用管太多的,只要数据长度相等就可以了.数据在内存中是顺序排列的
浩子 2003-09-26
  • 打赏
  • 举报
回复
我现在手头的这个函数是这样的,这几个类型又如何对应呢?

unsigned int CRC16(unsigned char *ptr,unsigned char len)

谢谢!
陈杰Damon 2003-09-26
  • 打赏
  • 举报
回复
VB的Long对应C的int(long)
String对应BSTR
Boolean对应VARIANT_BOOL

通常用这几种就已经够了。
浩子 2003-09-26
  • 打赏
  • 举报
回复
谢谢闲人,但这样说了后我还是一头雾水,能不能提供点更详细的说明?
射天狼 2003-09-26
  • 打赏
  • 举报
回复
UP~~
说明白一些!!
jlum99 2003-09-26
  • 打赏
  • 举报
回复
VB 里的long型长度是32 integer 是16 ,byte 是 8位 .只要是长度一样对应就可以了.与VC里的变量长度对应就可,主要是因为VB里的变量类型是强制变换.
jlum99 2003-09-26
  • 打赏
  • 举报
回复
以前的帖子很多的,关于这方面的,最好使用VB用起来最自然最舒服的long型变量

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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