Kann ich C++ und C in einem einzigen Projekt in Visual Studio mischen?

Lesezeit: 2 Minuten

Benutzer-Avatar
Käse

Ich habe ein Win32-DLL-Projekt in VS2008, es ist in einer Handvoll C-Modulen geschrieben.
Weil ich Auch in der Lage sein möchten, außerhalb von VS2008 zu bauen, ohne Abhängigkeit von VS2008, habe ich ein benutzerdefiniertes Makefile erstellt, das alle Schritte zum Erstellen und Verknüpfen ausführt. All dies ist gut eingerichtet.

Jetzt möchte ich dieser DLL ein paar C++-Module hinzufügen. Ich habe das benutzerdefinierte Makefile geändert, um die .cpp-Module als C++ und die .c-Module als normales C (/Tc) zu kompilieren. Das funktioniert alles. Es verbindet alles miteinander, kein Problem.

Kann ich das VS2008-Projekt so konfigurieren, dass es dasselbe tut?

Kann ich C++ und C im selben VS2008-Projekt mischen?

Oder brauche ich dafür einen benutzerdefinierten Build-Schritt?

Vielen Dank.


ANTWORTEN

Ich hatte das VS2008-Projekt so eingestellt, dass es als C kompiliert wurde. Ich musste es in Compile As “Default” ändern. Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie Eigenschaften und dann … :

Alt-Text

Danke Pawel.

  • Ich wähle einfach die Datei .c aus dem Projektmappen-Explorer “Eigenschaften” -> dann als C-Code kompilieren. Und seine Arbeit 😛

    – Benutzer956584

    2. Mai 2013 um 13:07 Uhr

Benutzer-Avatar
Pavel Minaev

Zunächst einmal sollten Sie nicht einmal brauchen /Tc Wenn Sie es selbst erstellen, verwendet cl.exe die Dateierweiterung, um den Typ zu bestimmen, sodass .c-Dateien standardmäßig als C und .cpp- und .cxx-Dateien als C++ kompiliert werden.

Für VS-Projekte funktioniert es genauso, außer dass Sie dieses Verhalten nicht überschreiben können (oder zumindest weiß ich nicht wie).

  • Sehr hilfreich. Es stellt sich heraus, dass es in VS eine Option gibt, um die Option “Compile As” festzulegen, eine von /Tc , /Tp oder “default”. Ich hatte es auf /Tc gesetzt. Ich musste es auf “Standard” zurücksetzen. A-OK.

    – Käse

    25. Oktober 2009 um 1:45 Uhr

Es gibt absolut keine Probleme, C und C++ im selben Projekt zu mischen. Alles, was Sie tun müssen, um Ihre Schnittstelle zwischen C- und C++-Modulen in Form von C-Funktionen und C-Datenstrukturen zu entwerfen, und dann sicherzustellen, dass diese Schnittstellenfunktionen auf C++-Seite mit C-Linkage-Spezifizierer deklariert werden extern "C".

Sie sollten gut hinzufügen, wenn man bedenkt, dass der Microsoft C-Compiler beide kompilieren wird. Wenn Sie sie dem Projekt hinzufügen, werden sie weitergegeben cl — und ich glaube cl entscheidet anhand der Erweiterung der Datei, welcher Modus verwendet werden soll. Sie verwenden .cppwas gut ist.

Kurz gesagt: Ja.

GCC wird dies auch tun, daher sollte Ihr Makefile einigermaßen portabel sein.

  • Beachten Sie, dass beim Kompilieren von C++ mit gcc, gcc Möglicherweise werden in der Linkphase keine erforderlichen Bibliotheken hinzugefügt. Der Verknüpfungsschritt für ein C++-Programm muss immer verwendet werden g++nicht gcc

    – bdonlan

    25. Oktober 2009 um 1:17 Uhr

1156990cookie-checkKann ich C++ und C in einem einzigen Projekt in Visual Studio mischen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy