Wed Apr 14 04:28:07 2010: Request 56582 was acted upon. Transaction: Ticket created by [email protected] Queue: PAR-Packer Subject: PAR-packer compilation on Windows XP32 box. Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: [email protected] Status: new Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=56582 >
Bonjour,
When first compiling, I had those messages :
1) WARNING :
c:\temp\par-packer-1.003\myldr\env.c(68) : warning C4996: 'strnicmp' was
declared deprecated
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\string.h(215) :
see declaration of 'strnicmp'
Message: 'The POSIX name for this item is deprecated. Instead, use the
ISO C++ conformant name: _strnicmp. See online help for details.'
This warning appears VERY frequently, and for all those functions : strdup,
strtok, sprintf, strncpy ...
To have this (harmless) warning go away, just add -D_CRT_SECURE_NO_DEPRECATE in
the compiler options.
2) COMPILATION ERROR :
main.c(115) : error C2143: syntax error : missing ';' before 'type'
main.c(116) : error C2065: 'argno' : undeclared identifier
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio
8\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
This error is due to the declaration
int argno = 0;
coming after conditionally compilated non-declaration code
The error disappears if the declaration is moved just immediately after the
beginning of main definition, as :
int main ( int argc, char **argv, char **env )
{
int exitstatus;
int i;
int argno = 0;
3) LINK ERROR :
link main.obj my_par_pl.obj win32.obj -release -nologo -nodefaultlib
-debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86
C:\Perl\lib\CORE\perl510.lib "C:\Program Files\Microsoft Visual Studio
8\VC\LIB\oldnames.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\LIB\kernel32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\user32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\gdi32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\winspool.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\comdlg32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\advapi32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\shell32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\ole32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\oleaut32.lib" "C:\Program Files\Microsoft Visual Studio
8\VC\PlatformSDK\lib\netapi32.lib" "C:\
Program Files\Microsoft Visual Studio 8\VC\LIB\uuid.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mpr.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winmm.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\version.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib" "C:\Program
Files\Microsoft Visual Studio 8\VC\LIB\msvcrt.lib" -out:par.exe
main.obj : error LNK2019: unresolved external symbol _strcasecmp referenced in
function _par_mktmpdir
par.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio
8\VC\BIN\link.EXE"' : return code '0x460'
Stop.
Apparently strcasecmp in unknown to Microsoft Visual C V8. Sounds strange, but
real.
The solution is to modify the file mktmpdir.c in myldr folder as follows :
Add the following block just after the first line in mktmpdir.c :
#ifdef _MSC_VER
#define snprintf _snprintf
#if _MSC_VER < 1500
#define vsnprintf _vsnprintf
#else
#define ssize_t SSIZE_T
#define uint32_t UINT32
#endif
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
#else
#ifdef __MINGW32__
#define WINSOCK_VERSION MAKEWORD(2,0)
#else
#define strncasecmp strnicmp
#define strcasecmp stricmp
#endif /* __MINGW32__ */
#endif /* _MSC_VER */
This block has been taken verbatim from libxml2, and in particular, I have
absolutely no
ideas if it is necessary nor working for MINGW32. It should work for Visual
Studio 2008.
my compiler version :
>>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
my version of Perl :
>> perl -version
This is perl, v5.10.1 built for MSWin32-x86-multi-thread
(with 2 registered patches, see perl -V for more detail)
Copyright 1987-2009, Larry Wall
Binary build 1007 [291969] provided by ActiveState http://www.ActiveState.com
Built Jan 26 2010 23:15:11
Hope that helps.
Best regards,
Jean Michel Malé
Scientific Software Support Eng
Main: +377 9205 1500
Direct: +377 9205 1575
[email protected]<mailto:[email protected]>
Website: www.sbmoffshore.com<http://www.sbmoffshore.com/>
[cid:878154907@14042010-2D3F]
Recipients in 'Cc...' of this e-mail may not read it immediately and shall not
be held accountable for not acting on enclosed information.
This message and any attachments are solely for the intended recipient and may
contain confidential or privileged information.
The Internet can not guarantee the integrity of this message. SBM shall (will)
not therefore be liable for the message if modified.
If you are not the intended recipient, any disclosure, copying, use, or
distribution of the information included in this message and any attachments is
prohibited.
If you have received this communication in error, please notify us by reply
e-mail and immediately and permanently delete this message and any attachments.
Thank you.
<<inline: SBMO_CL-email.gif>>
