Maison > développement back-end > C++ > le corps du texte

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
Libérer: 2024-10-28 09:49:02
original
443 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!