Я пытаюсь вызвать функцию C в моем приложении VB6.Проблема в том, что эта функция принимает простой 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 As String, но это должен быть символ.
Основная проблема заключается в том, что char не существует в VB6.
Как объявить и передать char в Dll на основе ac из кода VB6?