将Integer参数从Vb6传递到C ++ dll

时间:2013-11-27 00:35:17

标签: c++ vb6

Public Declare Function getTable Lib "LuxDll.dll" (ByVal table As Integer, _
     ByVal col As Integer) As String

BSTR _stdcall getTable(int table, int col)

Dim i
i=5
debug.print getTable(i, 1)

上述作品

但是如果我做“Dim i as integer”它会崩溃

VB中的参数是不是整数?

由于

编辑:我应该指定C ++端崩溃及其因为整数值传递为-65000ish

2 个答案:

答案 0 :(得分:1)

当我做这样的事情时,我会尝试对我的类型非常明确。 Int从实现变为实现,从平台变为平台。

在任何地方使用signed long或VB Int32中的等效类型,而不是int或integer。这将为你节省很多痛苦。

对于出于文档目的而明确说明您的类型,还有一些内容可以说。我有很多问题试图从供应商处获取DLL,但文档工作不好。像Int64这样简单的东西,或者无符号的短路将会告诉那些试图与你的DLL接口的人如何处理它。

答案 1 :(得分:1)

在将VB6与C / ++混合时,C int等于VB6中的Long:所以Dim i As Long应该有效。这在.NET中已不再适用。虽然你做对了,但它应该是BYVAL(另一个常见的错误)