如何从VB6应用程序将char参数传递到C DLL?

曼塔斯(MantasDaškevičius)

我正在尝试在VB6应用程序中调用C函数。问题在于该函数需要简单char的参数。不是char数组指针(char *),而是常规指针char

它是这样声明的:

#define FM_API extern "C" int _stdcall
FM_API NVF_SetGroupFormat(char *aMarker, char aDecSeparator, int aDigits)

如果执行成功,则返回-1,否则返回0。

从一开始,我就做我一直做的事情-只是声明了而已。

这是我的声明:

Declare Function SetGroupFormat Lib "C:\Libs\FM_API.dll" Alias "NVF_SetGroupFormat" (ByVal lMarker As String, ByVal lDecSeparator As String, ByVal lDigits As Integer) As Integer

但是它总是返回0(失败/错误)。

我认为我传递的参数有问题。我打电话给dll作者寻求建议,并告诉他我如何传递参数。这是该函数的调用:

Dim lSt As Integer
lSt = SetGroupFormat("=;\n", ".", 0)

作者告诉我该调用是正确的,但他告诉我我的声明“可能”是错误的,因为我将lDecSeparator声明为String,但应为char。

主要问题是VB6中不存在char。

如何从VB6代码声明char并将其传递给基于ac的Dll?

康拉德·鲁道夫

在VB6中,您可以为此使用定长字符串:

Declare Function SetGroupFormat Lib "C:\Libs\FM_API.dll" Alias "NVF_SetGroupFormat" ( _
    ByVal lMarker As String, _
    ByVal lDecSeparator As String * 1, _
    ByVal lDigits As Integer _
) As Integer

自从我使用VB6以来已经有一段时间了,我的知识有点生锈。如果不支持上述语法,则肯定可以进行以下操作:

Type SingleChar
    Value As String * 1
End Type

Declare Function SetGroupFormat Lib "C:\Libs\FM_API.dll" Alias "NVF_SetGroupFormat" ( _
    ByVal lMarker As String, _
    ByVal lDecSeparator As SingleChar, _
    ByVal lDigits As Integer _
) As Integer

或者,您也可以使用数据类型Byte来表示单个8位值,等同char于外部API。如果调用失败,则归因于与参数类型无关的其他原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将.NET COM dll中的结构或类返回到使用中的VB6应用程序?

如何从内存中释放在VB6应用程序中调用的.Net DLL?

将参数从.net dll(或控制台应用程序)传递到角度应用程序(角度5)

在不安装或注册dll的情况下运行VB6应用程序

在Windows 10上安装VB6应用程序时缺少DLL

将Delphi记录类型传递给VB6 DLL

从VB6调用C ++ DLL传递垃圾数据作为参数吗?

找不到从VB6调用的C ++ DLL程序

从C ++ DLL到Delphi:如何将指向数据的指针从C ++ DLL传递到Delphi程序?

vb6到vb.net dll兼容版本

如何将没有托管代码的DLL打包到WPF应用程序中?

如何将 COM dll 捆绑到便携式应用程序中?

从.Net到VB6的WebServices的DLL-如何设置app.config

如何将 unsigned short* 从 Visual-C++ DLL 传递到 VB.NET

如何从AutoHotkey脚本调用vb6中编码的.dll?

如何从.NET中的VB6 dll使用方法?

找不到实体框架提供程序-从VB6内部调用C#Com DLL

在VB6应用程序中,仅在IDE中,ac#dll的CreateObject失败,并出现“ ActiveX组件无法创建对象”

将参数传递给dll?

如何将结构从C#传递到C ++ DLL?

将结构传递到dll

如何在 c++ builder 6 中从应用程序源创建 dll?

如何将COM对象从VBA传递到C ++ DLL

如何将DOMDocument从VBA传递到C ++ dll

C ++ dll上的COM dll

如何使用IPC将数据从ActiveX对象传递到VB6应用程序-(单个实例应用程序)?

使用IIS6将ASP MVC4应用程序部署到Windows 2003时的Dll地狱

使用IIS6将ASP MVC4应用程序部署到Windows 2003时的Dll地狱

无法启动程序C:\ ... \ ****。dll VB.net应用程序Visual Studio 2015