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

Comment intégrer du code C dans un projet C dans Visual Studio 2010 et éviter les erreurs de liaison ?

Linda Hamilton
Libérer: 2024-10-27 21:57:30
original
430 Les gens l'ont consulté

How to Integrate C Code into a C   Project in Visual Studio 2010 and Avoid Linker Errors?

Erreur de liaison lors de l'appel d'une fonction C à partir du code C dans des projets Visual Studio 2010 distincts

Lors de la tentative d'intégration du code C dans un projet C dans Visual Studio 2010, les développeurs peuvent rencontrer des erreurs de l'éditeur de liens. Ce problème survient lors de la liaison de bibliothèques statiques ou dynamiques. Une organisation du code incompatible et des incohérences dans les noms de fichiers et les macros peuvent souvent conduire à ces erreurs.

Organisation et déclarations de fichiers appropriées

En C et C, chaque objet ou module doit être clairement séparé, avec son propre fichier d'en-tête et son propre fichier de code source. Pour plusieurs fonctions C, un fichier d'en-tête (par exemple,functions.h) et un fichier de code source (par exemple,functions.c) sont recommandés.

Exportation de fonctions

Pour rendre les fonctions accessibles à d'autres projets, des mécanismes d'exportation appropriés doivent être mis en œuvre. En C, cela peut être réalisé en ajoutant le mot-clé extern avant la déclaration de fonction dans le fichier d'en-tête. Cependant, en C , la macro externe "C" doit être utilisée. De plus, vous devrez peut-être définir des macros pour spécifier si le code exporte ou importe des fonctions.

Paramètres du compilateur et de l'éditeur de liens

Dans Visual Studio 2010, des paramètres de projet spécifiques peuvent doivent être configurés pour garantir une compilation et une liaison appropriées. Ces paramètres incluent des définitions de préprocesseur, qui peuvent être utilisées pour contrôler l'expansion des macros et les comportements d'exportation/importation de fonctions.

Structure de code réorganisée

  1. Fichier d'en-tête (functions.h):
<code class="c">#include <stdio.h>

#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>
Copier après la connexion
  1. Fichier de code source (functions.c):
<code class="c">#define FUNCTIONS_EXPORTS
#include "functions.h"

char *dtoa(double, int, int, int*, int*, char**)
{
    // Function Implementation
}

char *g_fmt(char*, double)
{
    // Function Implementation
}

void freedtoa(char*)
{
    // Function Implementation
}</code>
Copier après la connexion

En adoptant ces directives et en garantissant une organisation appropriée des fichiers, des déclarations de fonctions et des mécanismes d'exportation, vous pouvez intégrer du code C dans des projets C dans Visual Studio 2010 et résoudre les erreurs de l'éditeur de liens lors de l'appel de fonctions C à partir du code C dans différents projets.

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!