Heim >Backend-Entwicklung >C++ >Wie behebe ich „Ungelöste externe Symbol'-Fehler beim Aufrufen von C-Funktionen aus C in Visual Studio 2010?

Wie behebe ich „Ungelöste externe Symbol'-Fehler beim Aufrufen von C-Funktionen aus C in Visual Studio 2010?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 09:49:02526Durchsuche

How to Resolve

Linkerfehler bei projektübergreifenden C-Funktionsaufrufen in C-Code in Visual Studio 2010

Um den Linkerfehler „unaufgelöstes externes Symbol g_fmt " beim Aufrufen einer C-Funktion aus C-Code in Visual Studio 2010 auftritt, können die folgenden Schritte hilfreich sein:

1. Organisation und Benennung:

Stellen Sie sicher, dass jedes C-Modul seinen eigenen Header und seine eigene Implementierung (Erweiterung .c) hat. Verwenden Sie konsistente Namenskonventionen für Dateien und Makros, z. B. G_FMT_H als Include-Schutz.

2. Änderungen an der Header-Datei:

Ersetzen Sie die Header-Datei header.h durch „functions.h“, die Makros zum Exportieren von Funktionen enthält.

<code class="c">#define FUNCTIONS_EXPORT_API __declspec(dllexport) // For DLL export
#ifdef __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*);

#ifdef __cplusplus
}
#endif</code>

3. Änderungen an der Implementierungsdatei:

Erstellen Sie eine entsprechende Implementierungsdatei, „functions.c“, und fügen Sie die Header-Datei ein. Definieren Sie die Funktionen und Makros für den Export.

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

char *dtoa(double, int, int, int*, int*, char**) {} // Define functions
char *g_fmt(char*, double) {}
void freedtoa(char*) {}</code>

4. Funktionen exportieren:

Definieren Sie das Makro FUNCTIONS_EXPORT im Projekt, das die DLL erstellt (oder als Projekteinstellung in Visual Studio), um die Funktionen für den Export zu markieren. Alternativ können Sie das von der Visual Studio-IDE automatisch definierte Makro ${YOUR_PROJECT_NAME}_EXPORTS verwenden.

Zusätzliche Überlegungen:

  • Verwenden Sie die gleichen Include-Schutzvorrichtungen im Header Datei und entsprechende Implementierungsdatei.
  • Stellen Sie sicher, dass das mit der DLL verknüpfte Projekt über die richtigen Importbibliotheken verfügt oder auf die richtigen Import-DLLs verweist.
  • Überprüfen Sie die Präprozessordefinitionen in den Projekteigenschaften, um sicherzustellen, dass der Export erfolgt Makro ist korrekt definiert.

Das obige ist der detaillierte Inhalt vonWie behebe ich „Ungelöste externe Symbol'-Fehler beim Aufrufen von C-Funktionen aus C in Visual Studio 2010?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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