Referenzierung von C-Funktionen in statischen Bibliothek von C++

Habe ich eine statische Bibliothek mit Funktionen geschrieben in C. wir sagen, dass die header-Datei heißt myHeader.h und sieht wie folgt aus:

#ifndef MYHEADER_H
#define MYHEADER_H

void function1();
void function2();

#endif

function1 und function2 sind nichts allzu besonderes. Lassen Sie uns sagen, Sie existieren in einer Datei namens impl1.c, die wie folgt aussieht:

#include "myHeader.h"

void function1() {
    //code
}
void function2() {
    //more code
}

Alle der code bisher genannten ist zusammengestellt in einigen statischen Bibliothek mit dem Namen libMyLib.ein. Ich würde lieber nicht ändern, der code zum erstellen dieser Bibliothek. Ich habe auch eine C++ - header (cppHeader.h), die wie folgt aussieht:

#ifndef CPPHEADER_H
#define CPPHEADER_H

class CppClass {
    private:
        double attr1;
    public:
        void function3();
};
#endif

Dann cppHeader.cpp sieht aus wie:

#include "cppHeader.h"
#include "myHeader.h"

//constructor
CppClass::CppClass(){}

void CppClass::function3() {
    function1();
}

Wenn ich versuche zu kompilieren, bekomme ich eine Fehlermeldung über eine nicht definierte Verweis auf function1(). Ich glaube, dass ich verlinkt hast alles richtig beim kompilieren. Ich bin ziemlich eingerostet in meinem C++. Ich bin mir sicher, dass ich mich gerade etwas dumm. Ich hoffe, dass meine einfachen Beispiel-code veranschaulicht das problem gut genug.

Vielen Dank im Voraus für jede Hilfe!!!

  • Kann nicht sagen nichts über C++, aber in C möchten Sie vielleicht, um Ihre Funktionsdeklarationen richtigen Prototypen ... geben Sie einfach void für die Parameter: void function1(void);
  • Ich dachte, dass war nicht "erforderlich" ist seit 1989!
  • parashift.com/c++-faq-lite/mixing-c-and-cpp.html
  • In der aktuellen C99 void function1(); ist eine Erklärung; void function2(void); ist ein Prototyp. Je nachdem, wie es implementiert ist, können Sie rufen Sie function1 als function1(); oder function1(foobar) oder ...; function2 muss aufgerufen werden, wie function2() und entsprechend umgesetzt.
  • Interessant. Zeigt an, wie viel C ich verwenden!
InformationsquelleAutor Ryan | 2011-03-13
Schreibe einen Kommentar