ich diesen Thread weiß wahrscheinlich tot ist, aber es ist immer noch sehr viel in der Suchmaschinen am Leben, damit ich dachte, ich würde einige schreiben Mehr Details. C++ ändert Routine-Namen (fügt eine Reihe von Zeichen hinzu), wenn sie kompiliert werden. Ich habe nicht das Wissen, dir zu sagen, warum es das tut. Ich würde vermuten, dass Routinen eindeutig unter allen Namespaces und Klassen im Programm identifiziert werden. Egal, C macht keine Namen. Wenn Sie versuchen, eine C-Header-Datei in Ihr Projekt aufzunehmen, wird alles gut während der Kompilierung funktionieren, aber wenn Sie C++ verknüpfen, werden die Namen der Routinen in der C-Header-Datei fehlerhaft und versuchen, sie in der Objektdatei für die C-Routinen zu finden. Es wird nicht in der Lage sein, sie zu finden, weil es erwartet, dass sie entstellt werden.
Dies ist am häufigsten, wenn Sie versuchen, eine bereits vorhandene C-Bibliothek zu verwenden. In diesem Fall können Sie den C-Code nicht als C++ neu kompilieren, um die Namensänderung wiederherzustellen. Sie müssen also dem C++ - Compiler mitteilen, dass er C-artige Routinen mit 'extern' C '' sucht. Das Einfügen in die Header-Datei ist nicht notwendig, aber wo immer ein C++ - Compiler eine Deklaration einer C-Routine findet, wird es sie brauchen. Die Platzierung der Header-Datei soll verhindern, dass Sie sich wiederholen.
Dies kann auch in einigen IDEs auftreten. Im Grunde führt dies jedoch dazu, dass eine C-Bibliothek mit einem C++ - Programm/einer C++ - Bibliothek verknüpft wird. Wenn gcc verwendet wurde, um es zu kompilieren, wird g ++ Probleme haben, es herauszufinden.
Das scheint jetzt offensichtlich, dass Sie es gesagt haben. – Bacu