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
答案 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(另一个常见的错误)