Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
dll not loading to Ctypes
#1
Hi everyone

I am using Python 3.6 on windows and having problems with some API code that I was provided from a Website that uses what they call the LexActivator.

Basically they provided me with this dll and the code required to load this dll and then use this for authentication of products. Unfortunately they do not seem to be able to help hence the reason I am here.

I have 2 files all in the same project folder as below so as you can see I have used the simplest relative path for the dll

1. LexActivator.py that is suppose to load the dll below
2. LexActivator.dll

The error I am getting when I run the code is as below, it is as if it cannot open and load the dll?

Error:
File "C:/Users/philb/PycharmProjects/Cryptlex/LexActivator.py", line 39, in <module> library = load_library(get_library_path()) File "C:/Users/philb/PycharmProjects/Cryptlex/LexActivator.py", line 33, in load_library return ctypes.cdll.LoadLibrary(path) File "C:\Python36\lib\ctypes\__init__.py", line 426, in LoadLibrary return self._dlltype(name) File "C:\Python36\lib\ctypes\__init__.py", line 348, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] The specified module could not be found
here is the code of the LexActivator, hope someone can point me in the right direction here.
Thanks

from ctypes import *
import sys
import ctypes
import ctypes.util


def UNCHECKED(type):
    if (hasattr(type, "_type_") and isinstance(type._type_, str)
            and type._type_ != "P"):
        return type
    else:
        return c_void_p


def get_library_path():
    if sys.platform == 'darwin':
        return "libLexActivator.dylib"
    elif sys.platform == 'linux':
        return "libLexActivator.so"
    elif sys.platform == 'win32':
        return "LexActivator.dll"

    else:
        raise TypeError("Platform not supported!")


def load_library(path):
    if sys.platform == 'darwin':
        return ctypes.CDLL(path, ctypes.RTLD_GLOBAL)
    elif sys.platform == 'linux':
        return ctypes.cdll.LoadLibrary(path)
    elif sys.platform == 'win32':
        return ctypes.cdll.LoadLibrary(path)
    else:
        raise TypeError("Platform not supported!")

print(get_library_path())

library = load_library(get_library_path())

# define types

CSTRTYPE = c_wchar_p
STRTYPE = c_wchar_p
CallbackType = CFUNCTYPE(UNCHECKED(None), c_uint32)


class PermissionFlags:
    LA_USER = 1
    LA_SYSTEM = 2


SetProductFile = library.SetProductFile
SetProductFile.argtypes = [CSTRTYPE]
SetProductFile.restype = c_int

SetProductData = library.SetProductData
SetProductData.argtypes = [CSTRTYPE]
SetProductData.restype = c_int

SetProductId = library.SetProductId
SetProductId.argtypes = [CSTRTYPE, c_uint32]
SetProductId.restype = c_int

SetLicenseKey = library.SetLicenseKey
SetLicenseKey.argtypes = [CSTRTYPE]
SetLicenseKey.restype = c_int

SetLicenseCallback = library.SetLicenseCallback
SetLicenseCallback.argtypes = [CallbackType]
SetLicenseCallback.restype = c_int

SetActivationMetadata = library.SetActivationMetadata
SetActivationMetadata.argtypes = [CSTRTYPE, CSTRTYPE]
SetActivationMetadata.restype = c_int

SetTrialActivationMetadata = library.SetTrialActivationMetadata
SetTrialActivationMetadata.argtypes = [CSTRTYPE, CSTRTYPE]
SetTrialActivationMetadata.restype = c_int

SetAppVersion = library.SetAppVersion
SetAppVersion.argtypes = [CSTRTYPE]
SetAppVersion.restype = c_int

SetNetworkProxy = library.SetNetworkProxy
SetNetworkProxy.argtypes = [CSTRTYPE]
SetNetworkProxy.restype = c_int

GetProductMetadata = library.GetProductMetadata
GetProductMetadata.argtypes = [CSTRTYPE, STRTYPE, c_uint32]
GetProductMetadata.restype = c_int

GetLicenseMetadata = library.GetLicenseMetadata
GetLicenseMetadata.argtypes = [CSTRTYPE, STRTYPE, c_uint32]
GetLicenseMetadata.restype = c_int

GetLicenseKey = library.GetLicenseKey
GetLicenseKey.argtypes = [STRTYPE, c_uint32]
GetLicenseKey.restype = c_int

GetLicenseExpiryDate = library.GetLicenseExpiryDate
GetLicenseExpiryDate.argtypes = [POINTER(c_uint32)]
GetLicenseExpiryDate.restype = c_int

GetLicenseUserEmail = library.GetLicenseUserEmail
GetLicenseUserEmail.argtypes = [STRTYPE, c_uint32]
GetLicenseUserEmail.restype = c_int

GetLicenseUserName = library.GetLicenseUserName
GetLicenseUserName.argtypes = [STRTYPE, c_uint32]
GetLicenseUserName.restype = c_int

GetActivationMetadata = library.GetActivationMetadata
GetActivationMetadata.argtypes = [CSTRTYPE, STRTYPE, c_uint32]
GetActivationMetadata.restype = c_int

GetTrialActivationMetadata = library.GetTrialActivationMetadata
GetTrialActivationMetadata.argtypes = [CSTRTYPE, STRTYPE, c_uint32]
GetTrialActivationMetadata.restype = c_int

GetTrialExpiryDate = library.GetTrialExpiryDate
GetTrialExpiryDate.argtypes = [POINTER(c_uint32)]
GetTrialExpiryDate.restype = c_int

GetTrialId = library.GetTrialId
GetTrialId.argtypes = [STRTYPE, c_uint32]
GetTrialId.restype = c_int

GetLocalTrialExpiryDate = library.GetLocalTrialExpiryDate
GetLocalTrialExpiryDate.argtypes = [POINTER(c_uint32)]
GetLocalTrialExpiryDate.restype = c_int

ActivateLicense = library.ActivateLicense
ActivateLicense.argtypes = []
ActivateLicense.restype = c_int

ActivateLicenseOffline = library.ActivateLicenseOffline
ActivateLicenseOffline.argtypes = [CSTRTYPE]
ActivateLicenseOffline.restype = c_int

GenerateOfflineActivationRequest = library.GenerateOfflineActivationRequest
GenerateOfflineActivationRequest.argtypes = [CSTRTYPE]
GenerateOfflineActivationRequest.restype = c_int

DeactivateLicense = library.DeactivateLicense
DeactivateLicense.argtypes = []
DeactivateLicense.restype = c_int

GenerateOfflineDeactivationRequest = library.GenerateOfflineDeactivationRequest
GenerateOfflineDeactivationRequest.argtypes = [CSTRTYPE]
GenerateOfflineDeactivationRequest.restype = c_int

IsLicenseGenuine = library.IsLicenseGenuine
IsLicenseGenuine.argtypes = []
IsLicenseGenuine.restype = c_int

IsLicenseValid = library.IsLicenseValid
IsLicenseValid.argtypes = []
IsLicenseValid.restype = c_int

ActivateTrial = library.ActivateTrial
ActivateTrial.argtypes = []
ActivateTrial.restype = c_int

IsTrialGenuine = library.IsTrialGenuine
IsTrialGenuine.argtypes = []
IsTrialGenuine.restype = c_int

ActivateLocalTrial = library.ActivateLocalTrial
ActivateLocalTrial.argtypes = [c_uint32]
ActivateLocalTrial.restype = c_int

IsLocalTrialGenuine = library.IsLocalTrialGenuine
IsLocalTrialGenuine.argtypes = []
IsLocalTrialGenuine.restype = c_int

ExtendLocalTrial = library.ExtendLocalTrial
ExtendLocalTrial.argtypes = [c_uint32]
ExtendLocalTrial.restype = c_int

Reset = library.Reset
Reset.argtypes = []
Reset.restype = c_int


class StatusCodes:
    LA_OK = 0

    LA_FAIL = 1

    LA_EXPIRED = 20

    LA_SUSPENDED = 21

    LA_GRACE_PERIOD_OVER = 22

    LA_TRIAL_EXPIRED = 25

    LA_LOCAL_TRIAL_EXPIRED = 26

    LA_E_FILE_PATH = 40

    LA_E_PRODUCT_FILE = 41

    LA_E_PRODUCT_DATA = 42

    LA_E_PRODUCT_ID = 43

    LA_E_SYSTEM_PERMISSION = 44

    LA_E_FILE_PERMISSION = 45

    LA_E_WMIC = 46

    LA_E_TIME = 47

    LA_E_INET = 48

    LA_E_NET_PROXY = 49

    LA_E_HOST_URL = 50

    LA_E_BUFFER_SIZE = 51

    LA_E_APP_VERSION_LENGTH = 52

    LA_E_REVOKED = 53

    LA_E_LICENSE_KEY = 54

    LA_E_LICENSE_TYPE = 55

    LA_E_OFFLINE_RESPONSE_FILE = 56

    LA_E_OFFLINE_RESPONSE_FILE_EXPIRED = 57

    LA_E_ACTIVATION_LIMIT = 58

    LA_E_ACTIVATION_NOT_FOUND = 59

    LA_E_DEACTIVATION_LIMIT = 60

    LA_E_TRAIL_NOT_ALLOWED = 61

    LA_E_TRIAL_ACTIVATION_LIMIT = 62

    LA_E_MACHINE_FINGERPRINT = 63

    LA_E_METADATA_KEY_LENGTH = 64

    LA_E_METADATA_VALUE_LENGTH = 65

    LA_E_ACTIVATION_METADATA_LIMIT = 66

    LA_E_TRIAL_ACTIVATION_METADATA_LIMIT = 67

    LA_E_METADATA_KEY_NOT_FOUND = 68

    LA_E_VM = 80

    LA_E_COUNTRY = 81

    LA_E_IP = 82

    LA_E_RATE_LIMIT = 90

    LA_E_SERVER = 91

    LA_E_CLIENT = 92
Reply
#2
I have now managed to resolve this issue now by installing VS2010 runtime

So I guess this can be closed.

Thanks

Phil
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  using ctypes to use a dll in a python module dauriac 3 291 Mar-06-2024, 04:38 PM
Last Post: dauriac
  Trying to debug segfault in ctypes binding to Fortran bthomas 1 568 Sep-01-2023, 11:26 AM
Last Post: bthomas
  ctypes juliolop 7 1,327 Apr-20-2023, 03:33 PM
Last Post: Larz60+
  Issue while using ctypes in python GiggsB 6 2,688 Mar-27-2022, 03:38 AM
Last Post: GiggsB
  Ctypes and libffi.so.7 luxedo 1 5,982 Oct-23-2021, 09:24 PM
Last Post: DeaD_EyE
  possible ctypes and numpy conflict? herbal_rage 0 3,092 Apr-16-2020, 11:35 AM
Last Post: herbal_rage
  python kernell crash with a ctypes program Jstechg 1 3,451 Nov-24-2018, 02:37 PM
Last Post: Jstechg
  generating ctypes wrapper for a c library? brighteningeyes 9 6,945 Nov-04-2018, 02:31 AM
Last Post: brighteningeyes
  DLL library with ctypes Max20 0 2,880 Aug-19-2018, 11:15 AM
Last Post: Max20
  Error Ctypes in Windows rramosg 4 9,283 Oct-17-2017, 05:26 AM
Last Post: rramosg

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020