Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:73568 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 65555 invoked from network); 3 Apr 2014 11:55:42 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 3 Apr 2014 11:55:42 -0000 Authentication-Results: pb1.pair.com smtp.mail=anatol.php@belski.net; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=anatol.php@belski.net; sender-id=unknown Received-SPF: error (pb1.pair.com: domain belski.net from 85.214.73.107 cause and error) X-PHP-List-Original-Sender: anatol.php@belski.net X-Host-Fingerprint: 85.214.73.107 klapt.com Received: from [85.214.73.107] ([85.214.73.107:48675] helo=klapt.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 0C/80-62638-B3C4D335 for ; Thu, 03 Apr 2014 06:55:40 -0500 Received: by klapt.com (Postfix, from userid 33) id 3A4EC23D611B; Thu, 3 Apr 2014 13:55:36 +0200 (CEST) Received: from 178.2.25.10 (SquirrelMail authenticated user anatol@belski.net) by webmail.klapt.com with HTTP; Thu, 3 Apr 2014 13:55:36 +0200 Message-ID: <57711604dc923c34412021350230d52e.squirrel@webmail.klapt.com> In-Reply-To: References: <42E6A56D-0FF1-4408-BCF5-DFBCEDA735EB@saxonica.com> <1396445137.2982.291.camel@guybrush> <2EF10AD3-FC2C-4F34-9639-8BC798DB0917@saxonica.com> <1396449767.2982.294.camel@guybrush> <40B86AC1-3057-4016-95E2-EB8E754A70E1@saxonica.com> Date: Thu, 3 Apr 2014 13:55:36 +0200 To: "O'Neil Delpratt" Cc: internals@lists.php.net User-Agent: SquirrelMail/1.5.2 [SVN] MIME-Version: 1.0 Content-Type: text/plain;charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [PHP-DEV] PHP C++ extension on Windows: setting the working directory the same as PHP From: anatol.php@belski.net ("Anatol Belski") Hi, On Thu, April 3, 2014 13:15, O'Neil Delpratt wrote: > > > Hi, > > > Please find the php_Saxon.h file attached. I am a beginner to the world > of php extensions so you might spot things that I should not be doing. Any > way the liens of code that you should focus are: > > Line 29 (includes the required header) > > > Lines between 143 - 160 > > > If you need the full project let me know. I have been using VC11. for the > setup of the project I followed various tutorial guides such as: > > http://www.dreamincode.net/forums/topic/244215-introduction-to-creating-a > - > php-extension-for-windows/ > > kind regards, > > O'Neil > > > > > On 3 Apr 2014, at 11:47, Anatol Belski wrote: > > >> Hi O'Neil, >> >> >> On Thu, April 3, 2014 11:44, O'Neil Delpratt wrote: >> >>> Just to report to the list that the linkage error has not gone away, >>> > even >>> with the extern “C” wrapped around the include. It seems like I need >>> to add some library dependency? But my experience of Windows and c++ >>> is limited. >>> >>> >>> On 2 Apr 2014, at 15:42, Johannes Schlüter >>> wrote: >>> >>> >>> >>>> On Wed, 2014-04-02 at 14:56 +0100, O'Neil Delpratt wrote: >>>> >>>> >>>>> When I compile my code I am now getting the following error: >>>>> >>>>> >>>>> >>>>> Error 93 error LNK2001: unresolved external symbol >>>>> "__declspec(dllimport) char * __cdecl virtual_getcwd(char >>>>> *,unsigned >>>>> int,void * * *)" (__imp_?virtual_getcwd@@YAPADPADIPAPAPAX@Z) > C:\Users > >>>>> \ond1\Documents\Visual Studio 2012\Projects\saxon\saxon >>>>> \SaxonProcessor.obj >>>>> >>>>> >>>>> >>>>> insertions in my C Code: >>>> >>>> The subject talks about C++, now C. If you are using C++: Probably >>>> > that >>>> header is missing extern "C" declarations? Try >>>> >>>> extern "C" { #include "TSRM/tsrm_virtual_cwd.h" } >>>> >>>> >>>> >>>> johannes >>>> >>>> >>> >>> ------------------------------- >>> O'Neil Delpratt >>> Software Developer, Saxonica Limited Email: oneil@saxonica.com >>> Tel: +44 118 946 5894 >>> Web: http://www.saxonica.com >>> Saxonica Community site: http://dev.saxonica.com >>> Bug tracking site: https://saxonica.plan.io/ >>> >>> >>> >>> >>> >>> >>> -- >>> PHP Internals - PHP Runtime Development Mailing List >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> >>> >>> >> do you have your code somewhere around, or at least could you share a >> problem snippet? >> >> Regards >> >> >> Anatol >> > > ------------------------------- > O'Neil Delpratt > Software Developer, Saxonica Limited Email: oneil@saxonica.com > Tel: +44 118 946 5894 > Web: http://www.saxonica.com > Saxonica Community site: http://dev.saxonica.com > Bug tracking site: https://saxonica.plan.io/ > > Yes, first of all you need to extern "C" all the PHP headers, as they are all C. The php.h is needed on any platform. Then the header include order seems odd, please take a look at the following: http://svn.php.net/viewvc/pecl/xmldiff/trunk/php_xmldiff.h?view=markup http://svn.php.net/viewvc/pecl/ktaglib/trunk/php_ktaglib.h?view=markup those are the headers of some C++ extensions. Also it might be interesting for you to look at their config.w32 . With the VCWD_GETCWD usage - that's only what you need. It's not necessary to use GetCurrentDirectory or getcwd, VCWD_GETCWD will do the job and care about TS/NTS portable way. Please also take a look at this wiki page https://wiki.php.net/internals/review_comments with some useful hints, like that there should be no PHP_FUNCTION definitions in php_myext.h but rather in the .cpp file. Regards Anatol