Maison >développement back-end >C++ >Comment résoudre les erreurs « Symbole externe non résolu » lors de l'appel de fonctions C à partir de C dans Visual Studio 2010 ?
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 :
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!