000028879 - System.DllNotFoundException: Unable to load DLL 'km'

Document created by RSA Customer Support Employee on Jun 14, 2016Last modified by RSA Customer Support Employee on Apr 21, 2017
Version 2Show Document
  • View in full screen mode

Article Content

Article Number000028879
Applies ToRSA Product Set: Key Manager
RSA Product/Service Type: C# Client
RSA Version/Condition: 3.5
 
Issue
System.TypeInitializationException: The type initializer for 'kmPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initial
izer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'km': The specified module could not be found.
 (Exception from HRESULT: 0x8007007E)
   at kmPINVOKE.SWIGExceptionHelper.SWIGRegisterExceptionCallbacks_km(ExceptionDelegate applicationDelegate, ExceptionDelegate arithmeticDelegate, Exc
eptionDelegate divideByZeroDelegate, ExceptionDelegate indexOutOfRangeDelegate, ExceptionDelegate invalidCastDelegate, ExceptionDelegate invalidOperat
ionDelegate, ExceptionDelegate ioDelegate, ExceptionDelegate nullReferenceDelegate, ExceptionDelegate outOfMemoryDelegate, ExceptionDelegate overflowD
elegate, ExceptionDelegate systemExceptionDelegate)
   at kmPINVOKE.SWIGExceptionHelper..cctor()
   --- End of inner exception stack trace ---
   at kmPINVOKE.SWIGExceptionHelper..ctor()
   at kmPINVOKE..cctor()
   --- End of inner exception stack trace ---
   at kmPINVOKE.R_KM_CTX_new_from_file__SWIG_1(String jarg1, Int32& jarg2)
   at km.R_KM_CTX_new_from_file(String file, Int32& OUTPUT)
   at Rsa.KeyManagerClient.RkmContext..ctor(String configurationFileName, String credentialPassword, String cachePassword)
CauseRSA Key Manager km.dll cannot be accessed.
Resolution

Make sure that km.dll is loadable by the application. Windows will use its general DLL loading search path to find the DLL, which would be


  • Working directory where your application is run
  • Windows folder
  • Windows/system32 folder
  • Any folder defined by the PATH environment variable

With C#, you can also create a text file named exactly the same as you binary, and append a .config to it, with the content below. The following privatePath value assumes that a folder named "myDLLs" exists in the same folder where the .exe is, and that km.dll is placed in that "myDLLs" folder.


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="myDlls/"/>
        </assemblyBinding>
    </runtime>
</configuration>


 



A Visual C++ Runtime dependency is required to use the DPM client DLLs.  Make sure you have installed the either the Microsoft Visual C++ 2005 Redistributables or the Microsoft Visual C++ 2010 Redistributables depending if you used the Microsoft Visual Studio 2005 or Microsoft Visual Studio 2010 DPM client.
 

Attachments

    Outcomes