Die Verknüpfung an C-Bibliothek in ein C++ - Anwendung

Arbeite ich auf ein C/C++ - Anwendung in Visual Studio 2010. Die Lösung hat mehrere Projekte, die kompiliert werden und rollte in einer einzigen ausführbaren Datei. Ich versuche zum hinzufügen von print-Anweisungen zum Debuggen ein paar der wichtigen Funktionen.

Habe ich eine printf-Anweisung in einer Funktion, die in einem der .c-Dateien. Ich habe die Betreuung zu gehören <stdio.h>. Die C-header enthalten ist in einer C++ - Datei irgendwo weiter oben. Ich weiß, dass es Unterschiede zwischen dem, wie die C-und C++ - linkers zu betreiben und zu extern Kräfte Verhalten. Aber ich bin kein Experte für die Feinheiten.

Den code in der folgenden Weise:

    //proc.h
    #ifdef __cplusplus
    extern "C" {
    #endif

    void do_stuff();

    #ifdef __cplusplus
    }
    #endif

    -----------------------------------------------

    //proc.c
    #include "proc.h"
    #include <stdio.h>

    void do_stuff()
    {
        printf("Hello from proc.c -- do_stuff()");
        //Some other stuff
    }


Wenn ich die Anwendung erstellen, sehe ich die folgende Fehlermeldung in VS-Ausgabefenster:

[proj path]\common.lib(proc.obj) : error LNK2019: unresolved external symbol _printf referenced in function _do_stuff@20


Ich habe auch versucht, indem die #include <stdio.h> in der header-Datei, sondern die c-Datei. In diesem Fall habe ich erhalten:
error LNK2001: unresolved external symbol printf

  • Dies kann helfen: Das Projekt des Interesses(enthält die c-Dateien, mit dem ich arbeite) ist gebaut mit nmake mit einem makefile und die resultierende Datei wird verwendet .exe erstellt, indem einige der anderen Projekte, die in diese Lösung.
InformationsquelleAutor doug | 2011-10-19
Schreibe einen Kommentar