Accessing dll

H

Helpful person

I am a complete novice to Python. I wish to access a dll that has
been written to be compatible with C and VB6. I have been told that
after running Python I should enter "from ctypes import *" which
allows Python to recognize the dll structure. I have placed the dll
into my active directory (if that's the correct word, one on my path)
for simplification.

I tried: "import name.dll" but this just gave me an error telling me
that there was no such module.

Can someone please help?

Richard
 
U

Ulrich Eckhardt

Am 06.09.2012 17:07, schrieb Helpful person:
I am a complete novice to Python.
Welcome!

I wish to access a dll that has
been written to be compatible with C and VB6. I have been told that
after running Python I should enter "from ctypes import *" which
allows Python to recognize the dll structure. I have placed the dll
into my active directory (if that's the correct word, one on my path)
for simplification.

Using ctypes, you can indeed load DLLs. Take a look at
http://docs.python.org, which includes the documentation for the ctypes
module but also general documentation and tutorials, which should be a
starting point for you.
I tried: "import name.dll" but this just gave me an error telling me
that there was no such module.

Like in VB or C, things are not that easy. You will always have to write
some code that informs Python about the names and parameters of the
functions in that DLL.

Good luck!

Uli
 
J

Jerry Hill

I am a complete novice to Python. I wish to access a dll that has
been written to be compatible with C and VB6. I have been told that
after running Python I should enter "from ctypes import *" which
allows Python to recognize the dll structure. I have placed the dll
into my active directory (if that's the correct word, one on my path)
for simplification.

I tried: "import name.dll" but this just gave me an error telling me
that there was no such module.

Can someone please help?

You should start by reading the ctypes documentation, here:
http://docs.python.org/library/ctypes.html . It has a lot of examples
that ought to get you started.

When you run into more specific problems, you're going to have to
provide a lot more information before we can help you, including the
specific documentation of the DLL you're trying to wrap, your
platform, and python version. If you are not permitted to share those
things, we may not be able to give you much help. Ctypes is very
specific to the actual library you are accessing, and requires that
you understand the requirements of the underlying DLL.
 
H

Helpful person

You should start by reading the ctypes documentation, here:http://docs.python.org/library/ctypes.html.  It has a lot of examples
that ought to get you started.

When you run into more specific problems, you're going to have to
provide a lot more information before we can help you, including the
specific documentation of the DLL you're trying to wrap, your
platform, and python version.  If you are not permitted to share those
things, we may not be able to give you much help.  Ctypes is very
specific to the actual library you are accessing, and requires that
you understand the requirements of the underlying DLL.

Thanks Jerry, I'll read the reference you posted. Unfortunately I
know almost nothing about the dll and Python is loaded in some strange
framework.

I'll post back after a thorough read about Ctypes.
 
H

Helpful person

Am 06.09.2012 17:07, schrieb Helpful person:


Using ctypes, you can indeed load DLLs. Take a look athttp://docs.python.org, which includes the documentation for the ctypes
module but also general documentation and tutorials, which should be a
starting point for you.


Like in VB or C, things are not that easy. You will always have to write
some code that informs Python about the names and parameters of the
functions in that DLL.

Good luck!

Uli

Thanks. I've been working my way through that page, so far without
any luck. I'm still trying.

It seems strange that there is no documented way to simply access the
dll, even incorrectly! If I could get Python to recognize the dll as
a module I would at least have a place to start debugging.
 
J

Jerry Hill

The reference might help if I could get Python to recognize the dll as
a module.

That's never going to happen. It's a DLL, not a python module. I
think the documentation lays that out pretty explicitly. Have you
experimented with the very first bit of example code in the
documentation? What do you get if you do the following at the
interactive interpreter?
 
M

MRAB

That's never going to happen. It's a DLL, not a python module. I
think the documentation lays that out pretty explicitly. Have you
experimented with the very first bit of example code in the
documentation? What do you get if you do the following at the
interactive interpreter?
Or this:
 
T

Tim Williams

I am a complete novice to Python. I wish to access a dll that has

been written to be compatible with C and VB6. I have been told that

after running Python I should enter "from ctypes import *" which

allows Python to recognize the dll structure. I have placed the dll

into my active directory (if that's the correct word, one on my path)

for simplification.



I tried: "import name.dll" but this just gave me an error telling me

that there was no such module.



Can someone please help?



Richard

I'm new to using the ctypes module also, but what I did to find the library was I appended the location of the dll to my PATH like so: (this is Windows)

pth = os.environ['path'].split(';')
pth.append(os.path.join(os.environ['userprofile'],'My Documents','DLLs'))
os.environ['path'] = ';'.join(pth)
 
T

Tim Williams

I am a complete novice to Python. I wish to access a dll that has

been written to be compatible with C and VB6. I have been told that

after running Python I should enter "from ctypes import *" which

allows Python to recognize the dll structure. I have placed the dll

into my active directory (if that's the correct word, one on my path)

for simplification.



I tried: "import name.dll" but this just gave me an error telling me

that there was no such module.



Can someone please help?



Richard



I'm new to using the ctypes module also, but what I did to find the library was I appended the location of the dll to my PATH like so: (this is Windows)



pth = os.environ['path'].split(';')

pth.append(os.path.join(os.environ['userprofile'],'My Documents','DLLs'))

os.environ['path'] = ';'.join(pth)

I should have also mentioned to look at LoadLibrary in the ctypes module. e.g.

mylib=cdll.LoadLibrary('mylib.dll')
 
C

Chris Angelico

FYI

My Python version is 2.5.4

You may wish to upgrade, that's quite an old version. Unless
something's binding you to version 2.x, I would strongly recommend
migrating to 3.2 or 3.3.

ChrisA
 
H

Helpful person

You may wish to upgrade, that's quite an old version. Unless
something's binding you to version 2.x, I would strongly recommend
migrating to 3.2 or 3.3.

ChrisA

Upgrading is not possible due to the large number of programs using
the early version.
 
C

Chris Angelico

Upgrading is not possible due to the large number of programs using
the early version.

Sure. At least you've considered it. :) Do look into moving up to 2.7,
at least, though. And of course, you can have multiple Pythons
installed simultaneously, allowing you to migrate only when you're
ready.

ChrisA
 

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

Staff online

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,012
Latest member
RoxanneDzm

Latest Threads

Top