dll in project?

A

Alex Hall

Hi all,
I have a dll I am trying to use, but I get a Windows error 126, "the
specified module could not be found". Here is the code segment:
nvdaController=ctypes.windll.LoadLibrary("nvdaControllerClient32.dll")

I have the specified dll file in the same directory as the file trying
to use said dll, and this is the only reference I make to the dll. Do
I need to register it somehow? If so, does this need to be done once,
or each time the application runs? If I need to register it, how would
I do so? Thanks!
 
A

Alf P. Steinbach

* Alex Hall:
Hi all,
I have a dll I am trying to use, but I get a Windows error 126, "the
specified module could not be found". Here is the code segment:
nvdaController=ctypes.windll.LoadLibrary("nvdaControllerClient32.dll")

I have the specified dll file in the same directory as the file trying
to use said dll, and this is the only reference I make to the dll. Do
I need to register it somehow? If so, does this need to be done once,
or each time the application runs? If I need to register it, how would
I do so? Thanks!

If 'ctypes.windll.LoadLibrary' just calls the Windows API LoadLibrary function
without adding any path, then the directories considered will only be those
known to the Windows API, like e.g. the process' current directory (I'm not sure
if the current directory is considered, but the details aren't important).

And most likely your calling script file is not in any of those directories.

Probably it will work to specify the full path to the DLL. You can obtain the
path to the calling file's directory by using the __file__ variable and the
'os.path' functions.


Cheers & hth.,

- Alf
 
U

Ulrich Eckhardt

Alex said:
I have a dll I am trying to use, but I get a Windows error 126, "the
specified module could not be found". Here is the code segment:
nvdaController=ctypes.windll.LoadLibrary("nvdaControllerClient32.dll")

In addition to Alf's answer, this can also happen when the OS can't find
another DLL that this one depends on.

Uli
 
A

Alex Hall

In addition to Alf's answer, this can also happen when the OS can't find
another DLL that this one depends on.

Well, os.getcwd() returns "c:\python26", not my program's directory.
However, I changed the reference to the dll to be
helpers.progdir+'\\nvdaControllerClient32.dll'
and still no luck! helpers.progdir is a var holding the top-level
directory of my project, using os.path. Again, using this more precise
reference still fails, triggering my except statement in my try/catch
loop.
 
A

Alf P. Steinbach

* Alex Hall:
Well, os.getcwd() returns "c:\python26", not my program's directory.
However, I changed the reference to the dll to be
helpers.progdir+'\\nvdaControllerClient32.dll'
and still no luck!

Are you sure you get a single directory separator backslash there?

I suggest using the os.path 'join' function, whatever it was called.

helpers.progdir is a var holding the top-level
directory of my project, using os.path.

But is that where the DLL resides, or is it in some subdirectory?

Again, using this more precise
reference still fails, triggering my except statement in my try/catch
loop.

Try also checking the arguments & documentation of ctypes.windll.LoadLibrary. I
know, you probably already done that. But I mention it just in case (I'm not
familiar with that function at the Python level, so don't know about the args).


Cheers & hth.,

- Alf
 
U

Ulrich Eckhardt

Did you check if this could be the case?
Well, os.getcwd() returns "c:\python26", not my program's directory.
However, I changed the reference to the dll to be
helpers.progdir+'\\nvdaControllerClient32.dll'
and still no luck!

Generally, there is os.path.join() IIRC which does this portably. This
probably doesn't matter though. What I would check is firstly if this file
could be opened at all, e.g. using os.stat().
helpers.progdir is a var holding the top-level directory of my
project, using os.path.

Huh? In what way using os.path?
Again, using this more precise reference still fails, triggering my
except statement in my try/catch loop.

Same error? See my initial guess! As a tool for finding out if there are
missing dependencies, take a look at http://dependencywalker.com

BTW: No need to CC me, I read your initial request here, I can ready any
follow-ups here, too. ;)

Uli
 
A

Alex Hall

Okay, I got a new copy and all seems well now. The dll is found and
loaded. The functions inside the dll are not working, but that is not
Python's fault. Thanks to everyone for your help and suggestions!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,263
Messages
2,571,062
Members
48,769
Latest member
Clifft

Latest Threads

Top