QuoteCode: (dl )'CC' => 'cl -TP -EHsc -GA3s -W3',
2018-11-06T13:04:58 GwenDragonDein Code des Makefile.PL für den Compiler ist doch:
QuoteCode: (dl )'CC' => 'cl -TP -EHsc -GA3s -W3',
https://metacpan.org/source/RPAGITSCH/Win32-File-S...
Ungetestet: c++ statt cl nehmen. bei den Schaltern weiß ich jetzt nicht.
2018-11-06T21:32:02 Raubtier2018-11-06T13:04:58 GwenDragonDein Code des Makefile.PL für den Compiler ist doch:
QuoteCode: (dl )'CC' => 'cl -TP -EHsc -GA3s -W3',
https://metacpan.org/source/RPAGITSCH/Win32-File-S...
Ungetestet: c++ statt cl nehmen. bei den Schaltern weiß ich jetzt nicht.
Der MSVC-Compiler heißt aber cl.exe. Nur sind die Schalter eigentlich alle mit / statt -. Und /TP heißt, dass eine C++-Datei erwartet wird. Siehe https://msdn.microsoft.com/de-de/library/fwkeyyhe....
Wie lautet denn die Fehlermeldung? MSVC war früher recht, ähm, flexibel, was die Interpretation des C++-Standards angeht, ist inzwischen aber da sehr streng.
Edit: ah, du willst mingw nehmen. Normalerweise erkennen die Compiler ja an der Dateiendung, welche Sprache es ist. Ich sehe aber kein cpp/cxx/cc bei dir. Versuch mal, dem Compiler -std=c++14 (eine Zahl aus 98, 03, 11, 14, 17 (oder 0x für 11, 1y für 14, 1z für 17 (für die Betas) bzw 2a für die Zukunft)) anzugeben; Warnungen sollten mit -Wall -Wextra -Wpedantic gehen (bei älteren Compilern -pedantic statt -Wpedantic). Und sollte das aber nicht CXX statt CC sein? So kenne ich das zumindest von Makefiles. (Bin aber mit Perl/Windows und XS sehr unerfahren)
Edit2: Ein paar Anmerkungen zu deinem Summary.h / Summary.xs:
- In C++ braucht man kein void zu schreiben für 0-argumentige Funktionen
- Vermeide new&delete, insbesondere hast du ein Speicherleck in Zeile 66/67 in Summary::Summary (new, dann Aufruf von substring). Die substring-Funktion selbst ist auch mehr als fragwürdig - du musst das Ergebnis sofort wegkopieren, sonst kannst du sie nur 1x verwenden oder änderst jedes Mal das Ergebnis; static storage duration ist nicht einmal thread safe. Viel schlimmmer noch: du deletest ggf. den falschen Speicher (den statischen von substring statt den dynamischen)!
- NULL heißt in C++ nullptr
- Du solltest Dinge mit "const" markieren, die const sind, also insbesondere die char*-Parameter.
- Bestimmt noch viel mehr... :-(
2018-11-06T13:23:44 GwenDragonSchon mal daran gedacht Strawberry Perls Umgebung mit c++ zu verwenden?