From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,691c1078cd009a0f X-Google-Attributes: gid103376,public From: Tucker Taft Subject: Re: Calling C from Ada - link problem Date: 2000/03/09 Message-ID: <38C7E615.A011C7FE@averstar.com>#1/1 X-Deja-AN: 595249639 Content-Transfer-Encoding: 7bit References: <8a803u$906$1@nnrp1.deja.com> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@inmet2.burl.averstar.com X-Trace: inmet2.burl.averstar.com 952624661 18022 141.199.8.164 (9 Mar 2000 17:57:41 GMT) Organization: AverStar (formerly Intermetrics) Burlington, MA USA Mime-Version: 1.0 NNTP-Posting-Date: 9 Mar 2000 17:57:41 GMT Newsgroups: comp.lang.ada Date: 2000-03-09T17:57:41+00:00 List-Id: Ashley King wrote: > > Hello everybody. I hope someone can help me. > > I am trying to call a C function from Ada. I am using ObjectAda 7.1.1 > and MS Visual C++ 6. Everything compiles. When I try to link on the Ada > side, I get the following error: > > whatever.lib: fatal error LNK1106: invalid file or disk full: cannot > seek to 0x... > > My disk is definitely not full, and I have looked through past Usenet > messages using Deja and none of the other suggestions or comments that I > saw have made any difference. > > The C project was created as a Win32 Dynamic-Link Library, and the build > produces .DLL, .EXP and .LIB files plus some others. I have put the path > that contains these files into the ObjectAda Project Settings under > Search links of type Normal. > > The Ada code I am using is, essentially: > > WITH INTERFACES.C ; > ... > FUNCTION whatever RETURN INTERFACES.C.INT ; > PRAGMA IMPORT ( C, whatever, "whatever" ) ; ObjectAda has a number of conventions other than simply "C" which allow you to be more specific about the calling convention and/or specify whether you are exporting/importing as part of a DLL. You might want to consult that part of the ObjectAda documentation that explains the options available for the "convention" argument to pragma Import. > The C code I am using is, in full: > > whatever.h: > > #ifdef __cplusplus > extern "C" { > #endif > __declspec(dllexport) int whatever(); > #ifdef __cplusplus > } > #endif > > whatever.cpp: > > #include "whatever.h" > int whatever() > { > return 12345; > } > > Thanks for any help. > > Regards, > Ashley -- -Tucker Taft stt@averstar.com http://www.averstar.com/~stt/ Technical Director, Distributed IT Solutions (www.averstar.com/tools) AverStar (formerly Intermetrics, Inc.) Burlington, MA USA