From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 66DD1BBAF for ; Tue, 15 Dec 2009 08:01:12 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ag8GAL7CJktBN2+rimdsb2JhbACJKpECgRIBAQEKCQwHEQW8GoQrBI0j X-IronPort-AV: E=Sophos;i="4.47,398,1257116400"; d="scan'208";a="39887265" Received: from blu0-omc4-s32.blu0.hotmail.com ([65.55.111.171]) by mail3-smtp-sop.national.inria.fr with ESMTP; 15 Dec 2009 08:01:11 +0100 Received: from BLU0-SMTP21 ([65.55.111.135]) by blu0-omc4-s32.blu0.hotmail.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 14 Dec 2009 23:01:11 -0800 X-Originating-IP: [75.172.111.103] X-Originating-Email: [roessler@q.com] Message-ID: Received: from [192.168.1.118] ([75.172.111.103]) by BLU0-SMTP21.blu0.hotmail.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Mon, 14 Dec 2009 23:01:10 -0800 Date: Mon, 14 Dec 2009 22:59:57 -0800 From: Robert Roessler User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:1.9.1.6) Gecko/20091206 SeaMonkey/2.0.1 MIME-Version: 1.0 To: Aaron Bohannon Cc: OCaml List Subject: Re: [Caml-list] linking errors involving cpp files References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 15 Dec 2009 07:01:10.0550 (UTC) FILETIME=[61D42B60:01CA7D54] X-Spam: no; 0.00; cpp:01 ocaml:01 ocaml:01 cpp:01 mlvalues:01 argc:01 argv:01 argv:01 argc:01 char:01 char:01 wrote:01 caml-list:01 undefined:01 int:01 Aaron Bohannon wrote: > How do I link C++ code with OCaml? Let's say I have a main program in > C/C++ and a function I want to call in OCaml: > > ---- main.c / main.cpp --- > #include > #include > #include > int main (int argc, char ** argv) { > char * caml_argv[argc + 1]; > int i; > for (i = 0; i< argc + 1; i++) caml_argv[i] = argv[i]; > caml_argv[argc] = NULL; > caml_main (caml_argv); > return 0; > } > -------- >... > ---then I get this: > > Undefined symbols: You might try (when mixing C++ and OCaml) wrapping the whole thing in an 'extern "C" {...}' block (*including* the #includes and the entire main function). Robert Roessler