Heim > Backend-Entwicklung > C++ > Hauptteil

Wie behebe ich Linker-Fehler beim Aufrufen von C-Funktionen aus einem separaten C-Projekt in Visual Studio 2010?

Linda Hamilton
Freigeben: 2024-11-01 09:51:02
Original
834 Leute haben es durchsucht

How to Resolve Linker Errors When Calling C Functions from a Separate C   Project in Visual Studio 2010?

Linkerfehler beim Aufrufen einer C-Funktion aus C-Code in einem separaten VS2010-Projekt

Verstehen des Problems:

Ein Entwickler Beim Versuch, eine C-Funktion aus einem C-Projekt in einer anderen Visual Studio 2010-Lösung aufzurufen, ist ein Linkerfehler aufgetreten. Trotz der Verwendung externer Schlüsselwörter und der Einbindung eines Headers konnte das Projekt keine Verbindung zur C-Bibliothek herstellen, was zu einem Fehler „ungelöstes externes Symbol“ führte.

Korrektur der Struktur:

Um das Problem zu beheben, muss die Projektstruktur für die C-Funktionen neu organisiert und umbenannt werden. Anstatt die C-Funktionsdefinitionen in den Header aufzunehmen, sollte der Header einfach externe Funktionen mit den richtigen Aufrufkonventionen deklarieren. Die Implementierung dieser Funktionen sollte in eine separate C-Quelldatei verschoben werden.

Funktionen exportieren:

Das Exportieren der C-Funktionen erfolgt durch die Definition eines Makros in der C-Quelle Datei. Beim Kompilieren des Projekts definiert dieses Makro die Funktionen als exportiert. Im C-Projekt sollte zuerst der Header eingefügt werden, um die externen Funktionen zu definieren, gefolgt von entsprechenden Makros, um die Funktionen als importiert zu markieren.

Empfohlene Dateistruktur:

  • functions.h – Header-Datei mit externen Deklarationen von C-Funktionen
  • functions.c – Implementierungsdatei mit Funktionsdefinitionen und notwendigen Exportmakros

Beispieldateien:

functions.h

<code class="c">#pragma once

#if defined(_WIN32)
    #if defined(FUNCTIONS_STATIC)
        #define FUNCTIONS_EXPORT_API
    #else
        #if defined(FUNCTIONS_EXPORTS)
            #define FUNCTIONS_EXPORT_API __declspec(dllexport)
        #else
            #define FUNCTIONS_EXPORT_API __declspec(dllimport)
        #endif
    #endif
#else
    #define FUNCTIONS_EXPORT_API
#endif

#if defined(__cplusplus)
extern "C" {
#endif

FUNCTIONS_EXPORT_API char *dtoa(double, int, int, int*, int*, char**);
FUNCTIONS_EXPORT_API char *g_fmt(char*, double);
FUNCTIONS_EXPORT_API void freedtoa(char*);

#if defined(__cplusplus)
}
#endif</code>
Nach dem Login kopieren

functions.c

<code class="c">#define FUNCTIONS_EXPORTS
#include "functions.h"

char *dtoa(double, int, int, int*, int*, char**)
{
    //function statements
}

char *g_fmt(char*, double)
{
    //function statements
}

void freedtoa(char*)
{
    //function statements
}</code>
Nach dem Login kopieren

Durch die Implementierung dieser Änderungen sollte der Linkerfehler behoben werden und das C-Projekt kann erfolgreich eine Verknüpfung zu den im separaten Projekt definierten C-Funktionen herstellen und diese aufrufen.

Das obige ist der detaillierte Inhalt vonWie behebe ich Linker-Fehler beim Aufrufen von C-Funktionen aus einem separaten C-Projekt in Visual Studio 2010?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!