Mail Archives: cygwin/2004/09/21/12:46:36
Larry Hall wrote:
> At 12:15 PM 9/21/2004, you wrote:
>
>>I think you're right, it seems to be a problem with trailing underscore in function naming.
>>For example :
>>
>>in /usr/lib/w32api/libkernel32.a we found :
>>
>> 00000000 T _FormatMessageA AT 28
>> U __head_libkernel32_a
>> 00000000 I __imp__FormatMessageA AT 28
>>
>>which is required by win32-winbase.o, result of the build of /usr/lib/gcc/win32ada/win32-winbase.adb
>> U _FormatMessageA
>> U _FormatMessageW
>> U _GlobalReAlloc
>> U _LocalReAlloc
>>
>>The source code for this part is the following :
>> pragma Import (Stdcall, Doit, "FormatMessageA");
>>
>>I try change it with pragma Import (C, Doit, "_FormatMessageA"); or things like that with no success.
>>
>>May be it's the trailing @28 after symbol name which cause error, but I cannot control it ( it's DLL calling convention parameter size ). Compiler/linker should usually add or remove trailing @nn if necessary.
>>
>>To answer your general questions, I'am building a large Ada application ( 200 source files ), using W32 API, with Win2000 GNAT Compiler.
>
> Sorry, I know nothing about Ada and how it works. If the "pragma" statement
> is supposed to take the place of the traditional function prototype in C/C++,
> then I agree that it looks "OK" (again, based on my knowledge of Ada). But
> the result is that it's looking for symbols that use the 'C' calling
> convention rather than the 'stdcall' calling convention. The libraries you
> are linking to want the 'stdcall' calling convention (since it is the
> default for Windows). If you cannot get Ada to ask for the proper symbol,
> you could try using the '--enable-stdcall-fixup' option (for 'ld') to
> attempt to massage away the problem.
The syntax for Pragma Import is:
pragma Import(
[Convention =>] convention_identifier, [Entity =>] local_name
[, [External_Name =>] string_expression] [, [Link_Name =>] string_expression]);
It might be worth experimenting with using Link_Name instead of External_Name - this
should enable you to specify exactly what the link name generated by the Ada system is.
-- Cliff
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -