Благодаря GSerg и wqw Я нашел решение этой проблемы:
В файле IDL массив символов должен быть объявлен как LPSTR, поэтому прототип функции выглядит следующим образом:
int _stdcall myFunc(LPSTR file_name_in, LPSTR file_name_out, LPSTR ErrMsg)
обратите внимание, что ErrMsg
объявляется точно так же, как и другие массивы, даже если он содержит выходное сообщение (читаемое на стороне VB6).
На стороне VB6 строки должны быть выделены как:
Dim file_name_in As String * 256
Dim file_name_out As String * 256
Dim ErrMsg As String * 256
При этом эти строки выделяются с ограниченным размером 256
, что делает их совместимыми с массивами символов в C DLL.
Надеюсь, это поможет кому-то еще.
С уважением,
G.B.