Einbindung von ANSI C Code unter MSVS2003.NET (C++ Umgebung)
-
Guten Tag,
der folgende Code wird vom MSVS2003 Compiler ohne Fehlermeldung und Warnings übersetzt. Jedoch habe ich eine bad access violation zur Laufzeit.
Wenn ich das von CODE::BLOCKS (GCC) kompilieren lasse wird das Programm normal ausgeführt.
#include "stdafx.h" extern "C" { #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { system("PAUSE"); return 0; } }
Die Sache sieht zwar nach dummi Anfängerproblem aus, ist es aber nicht!
**und hier kommen die Randbedingungen:
- Der C Code soll in C++ eingebunden werden.
- Das ominöse .NET Framework von Microsoft ist mir dabei völlig egal
**
-
lovepulse schrieb:
Die Sache sieht zwar nach dummi Anfängerproblem aus, ist es aber nicht!
ist es bestimmt.
nimm doch mal die main aus dem extern "C" block raus
-
das funktioniert nicht, gleicher Fehler wie vorher
-
Ich hab' mal die stdio.h von MSVS2003 geöffnet, da steht ab Zeile 35
#ifdef __cplusplus extern "C" { #endif ......
Mit anderen Worten, alle C-Funktionen aus stdio.h sind falls __cplusplus definiert wurde als extern "C" deklariert.
Nun verstehe ich nicht, was du noch zusätzlich mit extern "C" deklarieren willst ?mfg
-
Ich will doch nur diesen ANSI C Code unter MSVS.NET 2003 zum Laufen bekommen:
int main() { system("PAUSE"); printf("Hello"); return 0; }
Das klappt auch nicht den Code in die stdio.h unter extern "C" direkt einzubinden
-
lovepulse schrieb:
Ich will doch nur diesen ANSI C Code unter MSVS.NET 2003 zum Laufen bekommen:
int main() { system("PAUSE"); printf("Hello"); return 0; }
Deine extern C kannst du rausschmeissen.
Datei/Neu/Projekt/Win32/Win32-Konsolenprojekt/
Dann den Namen eingeben, z.B. test usw.Das vorgefertigte:
int _tmain(int argc, _TCHAR* argv[]) { return 0; }
Kannst du auch rausschmeissen und mit deiner Version ersetzen.
Funzt.
-
Es funzt. Leider habe ich nicht an diese Triviallösung geglaubt.
GOTO _Semester_1
-
Vermutlich ist das der Grund warum die Lösungsfindung verhältnismäßig viel Text verursacht hat - hier hätte wohl niemand vermutet dass der VC++2003 nicht in der Lage ist ANSI-C Code (als .c-Datei) zu kompilieren