这两天一个劲的折腾vb调用dll,最终发现,vs2010是个捣乱的家伙。
如果是vc6配合vb6很好的就解决了这个问题,没有什么难的地方。
vs2010的vc生成的dll已经不能被vb6调用了,当然也许是dll里面缺少了几个dll造成的,但是如果是vc6生成的dll就不存在这个问题。
而且,对于vs2010的vb而言,引用中已经没有dll的标签了,大概是更推荐使用com了,而com来源于c#,看来是准备在vc和vb之间硬性插入一个c#了。
def文件似乎是必需的,在vc而言,__declspec(dllexport)一样可以输出dll的函数,但是对于vb6似乎只能识别def。
在不同的环境下使用时,Depends.exe是个很好的工具,在vc6的工具选项中就存在这个工具,不知道为什么vs2010里面没有了。
在Depends.exe窗体里面,打开一个dll,所需信息一览无余。如果所在环境缺少相应的文件,会有明显的提示。
vb的函数参量,传值,传址两种方式对于vc的而言,就是一个是变量或者是变量指针。
vc的int,对应着vb的long,所以一般的情况下,一般参数就定义成long(vb)匹配int(vc)。
对于vb的结构就是type 和end type定义,也很简单。