Sisyphus said:
When I run 'nmake test', I get:
Microsoft (R) Program Maintenance Utility Version 7.00.9466
Copyright (C) Microsoft Corporation. All rights reserved.
F:\perlvc7\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
1..15
ok 1
Dictionary creation failed at test.pl line 19
NMAKE : fatal error U1077: 'F:\perlvc7\bin\perl.exe' : return code '0xff'
Stop.
Ok ... the problem is with the utilities.c function 'dictopen'. You'll find
these comments about dictopen in that file:
"This function is used to open a dictionary file or a word file,
or any associated data file (like a post process knowledge file).
It works as follows. If the file name begins with a "/", then
it's assumed to be an absolute file name and it tries to open
that exact file.
If the filename does not begin with a "/", then it uses the
dictpath mechanism to find the right file to open. This looks
for the file in a sequence of directories until it finds it. The
sequence of directories is specified in a dictpath string, in
which each directory is followed by a ":".
The dictpath that it uses is constructed as follows. If the
dictname is non-null, and is an absolute path name (beginning
with a "/", then the part after the last "/" is removed and this
is the first directory on the dictpath. After this comes the
DICTPATH environment variable, followed by the DEFAULTPATH."
(This is a very non-portable thing to be doing, btw. If you care enough, you
might like to inform the developers .... though given that that they have
produced an executable that works on Win32, they are probably aware of the
issue. Still - if they care about being portable, they shouldn't be doing
this.)
For me, one solution was as simple as changing $DATA_DIR from
'F:/link_parser/link41b/data' to simply '/link_parser/link41b/data'. But
that only works because I'm running in the F drive. If ever I try to 'use
Lingua::LinkParser;' in a script when my current working directory is in a
drive other than F, then that script is going to crash. If you need to work
across different drives then you'll have to take a closer look at the way
dictopen() operates and work it out from that - which may mean you have to
hack at the dictopen() code in utilities.c.
Anyway .... I now get:
F:\comp_vc7\Lingua-LinkParser-1.09>nmake test
Microsoft (R) Program Maintenance Utility Version 7.00.9466
Copyright (C) Microsoft Corporation. All rights reserved.
F:\perlvc7\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
1..15
ok 1
Opening /link_parser/link41b/data/words/words.n.p
Opening /link_parser/link41b/data/words/words.n.1
Opening /link_parser/link41b/data/words/words.n.2.s
Opening /link_parser/link41b/data/words/words.n.2.x
Opening /link_parser/link41b/data/words/words.n.3
Opening /link_parser/link41b/data/words/words.n.4
Opening /link_parser/link41b/data/words/words.s
Opening /link_parser/link41b/data/words/words.n.t
Opening /link_parser/link41b/data/words/words.y
Opening /link_parser/link41b/data/words/words.v.1.1
Opening /link_parser/link41b/data/words/words.v.1.2
Opening /link_parser/link41b/data/words/words.v.1.3
Opening /link_parser/link41b/data/words/words.v.1.4
Opening /link_parser/link41b/data/words/words.v.5.1
Opening /link_parser/link41b/data/words/words.v.5.2
Opening /link_parser/link41b/data/words/words.v.5.3
Opening /link_parser/link41b/data/words/words.v.5.4
Opening /link_parser/link41b/data/words/words.v.2.1
Opening /link_parser/link41b/data/words/words.v.2.2
Opening /link_parser/link41b/data/words/words.v.2.3
Opening /link_parser/link41b/data/words/words.v.2.4
Opening /link_parser/link41b/data/words/words.v.2.5
Opening /link_parser/link41b/data/words/words.v.6.1
Opening /link_parser/link41b/data/words/words.v.6.2
Opening /link_parser/link41b/data/words/words.v.6.3
Opening /link_parser/link41b/data/words/words.v.6.4
Opening /link_parser/link41b/data/words/words.v.6.5
Opening /link_parser/link41b/data/words/words.v.4.1
Opening /link_parser/link41b/data/words/words.v.4.2
Opening /link_parser/link41b/data/words/words.v.4.3
Opening /link_parser/link41b/data/words/words.v.4.4
Opening /link_parser/link41b/data/words/words.v.4.5
Opening /link_parser/link41b/data/words/words.v.8.1
Opening /link_parser/link41b/data/words/words.v.8.2
Opening /link_parser/link41b/data/words/words.v.8.3
Opening /link_parser/link41b/data/words/words.v.8.4
Opening /link_parser/link41b/data/words/words.v.8.5
Opening /link_parser/link41b/data/words/words.v.1.p
Opening /link_parser/link41b/data/words/words.v.10.1
Opening /link_parser/link41b/data/words/words.v.10.2
Opening /link_parser/link41b/data/words/words.v.10.3
Opening /link_parser/link41b/data/words/words.v.10.4
Opening /link_parser/link41b/data/words/words.adj.1
Opening /link_parser/link41b/data/words/words.adj.2
Opening /link_parser/link41b/data/words/words.adj.3
Opening /link_parser/link41b/data/words/words.adv.3
Opening /link_parser/link41b/data/words/words.adv.1
Opening /link_parser/link41b/data/words/words.adv.2
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10
ok 11
ok 12
ok 13
ok 14
ok 15
'No tests defined for Lingua::LinkParser:
efinitions extension.'
'No tests defined for Lingua::LinkParser:
ictionary extension.'
'No tests defined for Lingua::LinkParser::Linkage::Sublinkage::Link
extension.'
'No tests defined for Lingua::LinkParser::Linkage::Word extension.'
'No tests defined for Lingua::LinkParser::Sentence extension.'
'No tests defined for Lingua::LinkParser::Simple extension.'
which looks pretty good to me .....
Cheers,
Rob