Введите Несоответствие в VB6 при вызове метода в .NET DLL - PullRequest
0 голосов
/ 15 октября 2018

У меня есть .NET DLL, которая служит оболочкой для стороннего приложения.Библиотека DLL зарегистрирована для COM-взаимодействия следующим образом:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ RegAsm.exe / tlb / codebase "C: \ Dev \ 1) Source \ TAC10_CAD\ Lib \ PowerPhoneInterface \ PowerPhoneInterface.dll "

В DLL есть несколько методов, которые вызываются из VB6.Все работают отлично, кроме одного.Прототип функции .NET для этого метода выглядит следующим образом:

    int SetAniAli([Optional] string incidentType);

В VB6 я вызываю проблемный метод следующим образом:

If GetSettingBitValue("G_POWERPHONE_ENABLE") Then
    If CheckPowerPhoneConnection() Then
        frmParent_Dispatch.PowerPhoneInterface.SetCallerInformation person, 
            phone, Callback, Address.FullText
        frmParent_Dispatch.PowerPhoneInterface.SetAniAli
        rc = frmParent_Dispatch.PowerPhoneInterface.SetAniAli
        If rc = 10 Then
            PowerPhoneCallInit = True
        Else
            Call modCAD.SetWarning("Attempt to set ANIALI information failed.")
        End If
    End If
End If

PowerPhoneInterface - это объектная ссылка на мою DLL.Первый вызов метода (SetCallerInformation) прекрасно работает.Кроме того, есть два других вызова DLL, вызванных из функции CheckPowerPhoneConnection, которые также прекрасно работают.Однако SetAniAli каждый раз выдает ошибку «несоответствие типов».Я определил rc как Long в VB6, но также попробовал Variant.Нет успеха ни с одним.

Я гуглил до тех пор, пока у меня не затуманилось зрение, и я не могу найти, что не так с вызовом.

Буду очень признателен за любые предложения.

1 Ответ

0 голосов
/ 15 октября 2018

Я не уверен, является ли это причиной или нет, но я изменил метод SetAniAli, чтобы сделать требуемый параметрidentType vs необязательным, и проблема больше не возникает.Если кто-то определенно знает, что у VB6 есть проблема с дополнительными параметрами или если они требуют специальной обработки на стороне VB6, пожалуйста, оставьте комментарий, чтобы другие могли извлечь выгоду.

...