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
In reply to Re^2: Name conflict between MinGW C++ standard library header and Perl development header
by llancet
in thread Name conflict between MinGW C++ standard library header and Perl development header
by llancet
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |