Maison  >  Article  >  développement back-end  >  Comment résoudre les erreurs « Symbole externe non résolu » lors de l'appel de fonctions C à partir de C dans Visual Studio 2010 ?

Comment résoudre les erreurs « Symbole externe non résolu » lors de l'appel de fonctions C à partir de C dans Visual Studio 2010 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 09:49:02444parcourir

How to Resolve

Erreur de l'éditeur de liens dans les appels de fonction C inter-projets dans le code C dans Visual Studio 2010

Pour résoudre l'erreur de l'éditeur de liens "symbole externe non résolu g_fmt " rencontré lors de l'appel d'une fonction C à partir du code C dans Visual Studio 2010, les étapes suivantes peuvent vous aider :

1. Organisation et dénomination :

Assurez-vous que chaque module C a son propre en-tête et sa propre implémentation (extension .c). Utilisez des conventions de dénomination cohérentes pour les fichiers et les macros, telles que G_FMT_H comme garde d'inclusion.

2. Modifications du fichier d'en-tête :

Remplacez le fichier d'en-tête header.h par function.h, qui inclut des macros pour l'exportation de fonctions.

<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. Modifications du fichier d'implémentation :

Créez un fichier d'implémentation correspondant, function.c, et incluez le fichier d'en-tête. Définir les fonctions et macros à exporter.

<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. Exportation de fonctions :

Définissez la macro FUNCTIONS_EXPORT dans le projet créant la DLL (ou en tant que paramètre de projet dans Visual Studio) pour marquer les fonctions à exporter. Vous pouvez également utiliser la macro définie automatiquement par Visual Studio IDE : ${YOUR_PROJECT_NAME}_EXPORTS.

Considérations supplémentaires :

  • Utilisez les mêmes gardes d'inclusion dans l'en-tête. et le fichier d'implémentation correspondant.
  • Assurez-vous que le projet lié à la DLL dispose des bibliothèques d'importation correctes ou référence les DLL d'importation correctes.
  • Vérifiez les définitions du préprocesseur dans les propriétés du projet pour vérifier que l'exportation la macro est correctement définie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn