2015-08-19 3 views
-2

En fait, j'essaie de compiler un projet c/C++ avec mingw. Le même projet est en fait compilé avec le compilateur Visual Studio. Pour cela, j'ai écrit un makefile et tout fonctionne jusqu'à présent.'memcpy' n'a pas été déclaré dans cette portée lors de l'utilisation du compilateur gcc

Au cours de la compilation j'obtiens l'erreur en ce qui concerne les fonctions qui sont déclarées string.h et STDIO.H sont acceptés dans les memcpy comme(), printf() ..., avec l'erreur suivante:

error: 'memcpy' was not declared in this scope 

C'est parce que le compilateur didn ne trouve pas les fonctions. Lors de la compilation au sein du studio visuel, cette erreur ne semble pas, logiquement, à cause du compilateur comprennent des chemins comme:

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ 

Ma question est maintenant: Que dois-je faire dans mon makefile pour dire au compilateur d'utiliser le " string.h "et" stdio.h "fonctions du mingw. J'ai essayé de mettre le chemin d'inclusion dans le makefile, comme:

INCLUDE_DIRS =\ 
C:\MinGW\include 

mais cela n'a aucun effet. Et aussi, il y a une différence entre le string.h et stdio.h de visual studio et string.h et stdio.h utilisés par gcc. Cela peut-il être un problème?

+0

Avez-vous '#include ' dans votre fichier source? –

+2

duplication possible de ['memcpy' n'a pas été déclaré dans cette portée] (http://stackoverflow.com/questions/24850479/memcpy-was-not-declared-in-this-scope) –

+0

Non, il n'est pas inclus dans le fichier source. Donc, c'est la question, il est possible de le forcer via makefile? – JohnDoe

Répondre

0

La méthode correcte consiste à ajouter ces inclusions aux fichiers source dans lesquels vous utilisez les méthodes qui y sont définies. Mais si vous insistez pour l'inclure à travers le makefile, vous pouvez utiliser force include.

Visual studio link.

To set this compiler option in the Visual Studio development environment Open the project's Property Pages dialog box.

Open Project Property Pages.

Click the C/C++ folder.

Click the Advanced property page.

Modify the Force Includes property.

ou utiliser -include path_to_the_header pour gcc

il suffit d'ajouter cette option à la ligne de commande de compilation. Bonne chance.