Debug a bad DLL calling convention Debug a bad DLL calling convention vba vba

Debug a bad DLL calling convention


I've seen this in Excel before without any external references. It happened, as with your problem, on an Exit Function call. Excel doesn't seem to have a /decompile option, but I fixed it by making a change in one of my class modules, executing a compilation from the Debug menu, and then undoing the change. I suspect that one of my class modules had mis-compiled for some reason, and Excel won't re-compile unless it thinks something has changed.


Have you checked your references and decompiled?

"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE"                                 "d:\My Documents\access\mayapp.mdb" /decompile

See also:
http://www.granite.ab.ca/access/decompile.htm
VBScript Decompile


Check references in code

Dim ref As ReferenceDim sMsg As String''Available since 2010If BrokenReference Then    For Each ref In References        ''Available since at least 2000        If ref.IsBroken Then            sMsg = sMsg & "Ref Name: " & ref.Name            'Also, if required            'sMsg = sMsg & vbCrLf & "Built In: " & ref.BuiltIn            'sMsg = sMsg & vbCrLf & "Full Path: " & ref.FullPath            'sMsg = sMsg & vbCrLf & "GUID: " & ref.Guid            'sMsg = sMsg & vbCrLf & "Kind: " & ref.Kind            'sMsg = sMsg & vbCrLf & "Major (version number): " & ref.Major            'sMsg = sMsg & vbCrLf & "Minor (version number): " & ref.Minor            sMsg = sMsg & vbCrLf & "=================================" & vbCrLf        End If    Next    MsgBox sMsgEnd If


I experienced and worked around this error using the .NET library for WinSCP from MS Access VBA.

What happened was:

  1. A function UploadSomething for connecting to an SFTP server and uploading a file worked fine.
  2. Within the function UploadSomething changed the "resume support" option with this code: myTransferOptions.ResumeSupport.State = TransferResumeSupportState.TransferResumeSupportState_Off

After the change, the code worked as desired. However in the code that called UploadSomething, Error 49 was thrown after the function had finished.

The error happened both when stepping through the code using the debugger and when executing at once outside of the debugger. Recompiling the project didn't work for me.

What did work was this:

  1. Remove the reference to the COM component
  2. Add the reference to the COM component
  3. Recompile