From owner-freebsd-hackers@FreeBSD.ORG Sun Apr 22 23:14:02 2007 Return-Path: X-Original-To: hackers@FreeBSD.org Delivered-To: freebsd-hackers@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D47C816A401; Sun, 22 Apr 2007 23:14:02 +0000 (UTC) (envelope-from dds@aueb.gr) Received: from mx-out-04.forthnet.gr (mx-out.forthnet.gr [193.92.150.103]) by mx1.freebsd.org (Postfix) with ESMTP id 3B2DC13C45A; Sun, 22 Apr 2007 23:14:01 +0000 (UTC) (envelope-from dds@aueb.gr) Received: from mx-av-03.forthnet.gr (mx-av.forthnet.gr [193.92.150.27]) by mx-out-04.forthnet.gr (8.13.8/8.13.8) with ESMTP id l3MNE0Y5006304; Mon, 23 Apr 2007 02:14:00 +0300 Received: from MX-IN-02.forthnet.gr (mx-in-02.forthnet.gr [193.92.150.185]) by mx-av-03.forthnet.gr (8.14.1/8.14.1) with ESMTP id l3MNE0LB009913; Mon, 23 Apr 2007 02:14:00 +0300 Received: from [192.168.136.22] (ppp122-171.adsl.forthnet.gr [193.92.229.171]) by MX-IN-02.forthnet.gr (8.14.1/8.14.1) with ESMTP id l3MNDpPD001947; Mon, 23 Apr 2007 02:13:53 +0300 Authentication-Results: MX-IN-02.forthnet.gr from=dds@aueb.gr; sender-id=neutral; spf=neutral Message-ID: <462BEC2B.5090508@aueb.gr> Date: Mon, 23 Apr 2007 02:13:47 +0300 From: Diomidis Spinellis User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.9) Gecko/20061211 SeaMonkey/1.0.7 MIME-Version: 1.0 To: Andrew Pantyukhin References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV 0.90.2/3147/Sun Apr 22 18:09:35 2007 on mx-av-03.forthnet.gr X-Virus-Status: Clean Cc: hackers@FreeBSD.org Subject: Re: extern "C" and undefined reference X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Apr 2007 23:14:02 -0000 Andrew Pantyukhin wrote: > 7zip developers converted some code from C++ to C, > while leaving the main stand-alone lzma app in C++. > They use 'extern "C" { }' blocks around #include's > referencing C headers. > > Everything compiles fine, but "undefined reference" > errors appear at linkage. The undefined references > are to the C functions included from withing those > 'extern "C"' wrappers. I tried to remove the > wrappers from some files and the amount of errors > decreased a bit. Is there a better workaround? > > Google came up with two results: remove the wrappers > or use c++ instead of cc. I'm already using c++. Many of the C headers are available in a different form for C++ programs. For example, in a C++ program you can #include instead of . You can use nm(1) on the .o files to see where the problem comes from. Diomidis