in reply to Re: Name conflict between MinGW C++ standard library header and Perl development header
in thread Name conflict between MinGW C++ standard library header and Perl development header
The issue is located to perl.h, not XSUB.h:
and compile with:#include "perl.h" #include <iostream> int main() { std::cout << "foo" << std::endl; }
D:\mydoc\projects\GenoEye-0.4.5-build\perl>g++ -ID:/gtk+-2.24.10/inclu +de/cairo -ID:/gtk+-2.24.10/include/glib-2.0 -ID:/gtk+-2.24.10/ lib/glib-2.0/include -ID:/gtk+-2.24.10/include -ID:/gtk+-2.24.10/inclu +de/freetype2 -ID:/gtk+-2.24.10/include/libpng14 -ID:/mydoc/pro jects/GenoEye-0.4.5-Source/src -ID:/mydoc/projects/GenoEye-0.4.5-build +/src -ID:/mydoc/projects/GenoEye-0.4.5-Source -ID:/Strawberry- 5.20.1.1-ia32/perl/lib/CORE -ID:/mydoc/projects/GenoEye-0.4.5-Source/p +erl -g -o test.exe test.cpp
it will reproduce this issue. Also, add #undef write before #include <iostream> won't help.
However, this conflict do not reproduce if I use Inline::CPP. The code below works well:
Why there's such big difference? I cannot understand it...use strict; use Inline 'CPP' => config => BUILD_NOISY => 1, INC => '-ID:/mydoc/projects/GenoEye-0.4.5-Source/src -ID:/mydoc/p +rojects/GenoEye-0.4.5-Source/perl -ID:/gtk+-2.24.10/include/cairo'; foobar(); use Inline 'CPP' => <<'CODE'; #include <perl.h> #include <iostream> void foobar() { std::cout << "foobar" << std::endl; } CODE
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Name conflict between MinGW C++ standard library header and Perl development header
by syphilis (Archbishop) on Nov 12, 2014 at 09:34 UTC | |
by llancet (Friar) on Nov 13, 2014 at 09:48 UTC | |
|
Re^3: Name conflict between MinGW C++ standard library header and Perl development header
by Anonymous Monk on Nov 12, 2014 at 08:50 UTC |