Sun May 09 08:50:52 2010: Request 55660 was acted upon.
Transaction: Correspondence added by sisyph...@optusnet.com.au
Queue: Win32-API
Subject: Re: [rt.cpan.org #55660] [PATCH] Partial win64 support for
Win32::API
Broken in: (no value)
Severity: (no value)
Owner: COSIMO
Requestors: sbenn...@accelrys.com
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=55660 >
----- Original Message -----
From: "Sisyphus" <sisyph...@optusnet.com.au>
> In any case, I'll try to rebuild the API_test64.dll when I get the time -
> as that will probably fix the problem, irrespective of the cause. (I'll
> get back when I've tested that out.)
Yes, I think that fixes the problem. The only test script that now fails is
01_Struct.t.
I built the API_test64.dll manually by running:
cl -c API_test.cpp
cl /LD API_test.obj API_test.def bufferoverflowU.lib
I then renamed the API_test.dll that was produced, to API_test64.dll.
For that to work, in API_test.h, I had to first change:
#ifdef API_TEST_EXPORTS
#define API_TEST_API __declspec(dllexport)
#else
#define API_TEST_API __declspec(dllimport)
#endif
to:
#ifdef API_TEST_EXPORTS
#define API_TEST_API /* __declspec(dllexport) */
#else
#define API_TEST_API /* __declspec(dllimport) */
#endif
Otherwise, when trying to compile the obj file, I got errors of the type:
API_test.cpp(31) : error C2491: 'nAPI_test' : definition of dllimport data
not allowed
API_test.cpp(33) : error C2491: 'sum_integers' : definition of dllimport
function not allowed
API_test.cpp(37) : error C2491: 'sum_integers_ref' : definition of dllimport
function not allowed
[and more similar]
I suspect that we need to build the API_test64.dll as part of the Win32::API
build procedure (rather than supply a pre-built API_test64.dll).
Cheers,
Rob