[Shapelib] Shapelib.dll PInvoke error
David.Gancarz at ci.orlando.fl.us
David.Gancarz at ci.orlando.fl.us
Mon Feb 26 13:31:09 EST 2007
Conny:
It's been a while since I did anything with PocketPC, so I don't remember
all the differences between .NET on it versus full Windows. But ...
regarding the shapelib.dll -- it dos not need to be included in your
Visual Studio project; it just needs to reside in a place the your
assembly can find it (typically, the same directory -- which is exactly
where the post build event puts it). Copying it there manually, as you
did, accomplishes the same thing. Shapelib.dll gets called at runtime. It
does not become part of the .net assembly, so your Visual Studio solution
ReadArcShape needs no reference to it at all. It only needs shapelib.dll
at runtime.
Secondly, the version of shapelib.dll on MapTools.org is compiled for
windows, so you will need to recompile it for Windows CE. The C/C++
source and VS projects should be out on the Shapelib site. That should be
possible since there is nothing exotic or windows-specific about the
shapelib c code.
Finally, I wouldn't think you will need to revisit the PInvoke calls in
the .net wrapper. As I recall the Compact Framework supports PInvoke --
although you might want to check the details on that.
I hope some of this helps, and good luck.
David Gancarz
----------------------------------------
Florida has a very broad public records law. As a result, any written
communication created or received by City of Orlando officials and
employees will be made available to the public and media, upon request,
unless otherwise exempt. Under Florida law, email addresses are public
records. If you do not want your email address released in response to a
public records request, do not send electronic mail to this office.
Instead, contact our office by phone or in writing.
"Constanze Tschritter" <Conny3 at gmx.de>
Sent by: shapelib-bounces at lists.maptools.org
02/26/2007 01:02 PM
Please respond to
Shapelib Development <shapelib at lists.maptools.org>
To
shapelib at lists.maptools.org
cc
Subject
[Shapelib] Shapelib.dll PInvoke error
Dear List,
When I tried to compile my Pocket PC 2003 project, the result was a
MissingMethodException saying the entry point SHPopen within the PInvoke
DLL shapelib.dll was not found (I¡¦ve got the german version of Visual
studio 8, but this is more or less what it said).
Here is the offending code snippet:
Const STRSHAPEPATH As String = "xxx\\xxx\\strassen.shp"
Private Sub ReadArcShape()
Dim myShapeType As ShapeLib.ShapeType =
ShapeLib.ShapeType.PolyLine
Dim hShape As IntPtr = New IntPtr()
Dim intNum As Integer = 0
Dim dblMinBounds As Double() = New Double(1) {0, 0}
Dim dblMaxBounds As Double() = New Double(1) {0, 0}
'At this point I get the MissingMethodException
hShape = ShapeLib.SHPOpen(STRSHAPEPATH, "rb")
¡K
End Sub
Looking up that error message at the internet I found some possible causes
for the error but until now, nothing I tried changed anything:
³ 1) Platform: I downloaded the Shapelib .Net Wrapper by David Gancarz
and recompiled the shapelib for Pocket-PC 2003. However I got an error
message, when I tried to use the same shapelib files he did. Thus I used a
windows ce shapelib package which had been assembled by Mateusz Loskot and
was able to compile those without problems. The only difference I noticed
was, that this package contained more files than David Gancarz had used.
A test with
¡§Dumpbin /header shapefile.dll |find ¡§machine¡¨¡¨ resulted in
¡§1C0 machine(ARM)¡¨ so I must have done something right.
Afterwards I tried to recompile the Maptools-Project (which is said
wrapper project), now with the new shapelib.dll. The only error message I
got was that the post build event copy $(ProjectDir)shapelib.dll
$(TargetDir) had failed, so I copied it manually into my project folder.
I¡¦m not sure if that was the right thing to do, because I don¡¦t know the
background behind this.
I added the maptools.dll reference to my project, but got an error, when I
tried the same with the shapelib (¡§Unable to add reference to
Shapelib.dll¡¨). Do I even have to add that, too, or is sufficient to only
add the maptools.dll? Well everything seemed to be ok, though, Visual
studio recognized the Shapelib functions.
³ 2) Build Action: I set the build action of the shapelib.dll in my
project to content, but nothing changed.
³ 3) PInvoke: I thought with the .Net wrapper I won¡¦t have to worry about
PInvoke.(?)
I don¡¦t know what else to do. I must have missed something, but I don¡¦t
know what. Maybe someone here can give me a hint what I¡¦m doing wrong.
Thank you very much in advance!
Cheers
Constanze Tschritter
PS: Sorry for the long mail. I didn't know how to describe it in a shorter
way.
--
Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
Ideal fur Modem und ISDN: http://www.gmx.net/de/go/smartsurfer
_______________________________________________
Shapelib mailing list
Shapelib at lists.maptools.org
http://lists.maptools.org/mailman/listinfo/shapelib
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/shapelib/attachments/20070226/d161b977/attachment.html
More information about the Shapelib
mailing list