« Visual C++ » : différence entre les versions
Aucun résumé des modifications |
|||
Ligne 1 : | Ligne 1 : | ||
=Chapeau ^= | [[Category:VisualStudio]] | ||
= Chapeau ^ = | |||
Officiellement appelé ''handle de suivi'', il est utilisé pour la déclaration des objets de type de classe de référence. | Officiellement appelé ''handle de suivi'', il est utilisé pour la déclaration des objets de type de classe de référence. | ||
<kode lang='cpp'> | |||
< | |||
int * pi1 = new int; // native heap | int * pi1 = new int; // native heap | ||
Int32^ pi2 = gcnew Int32; // managed heap | Int32^ pi2 = gcnew Int32; // managed heap | ||
Ligne 13 : | Ligne 11 : | ||
array1->Copy(array1, localArray, array1->Length); | array1->Copy(array1, localArray, array1->Length); | ||
} | } | ||
</ | </kode> | ||
=Utiliser une DLL C#= | = Utiliser une DLL C# = | ||
==Ajouter la référence== | == Ajouter la référence == | ||
Clique-droit sue le projet → Références → Ajouter une nouvelle référence... | Clique-droit sue le projet → Références → Ajouter une nouvelle référence... | ||
==Utiliser la DLL dans le code== | == Utiliser la DLL dans le code == | ||
<kode lang='cpp'> | |||
< | |||
using namespace Espace1::Espace2; | using namespace Espace1::Espace2; | ||
Ligne 33 : | Ligne 27 : | ||
Class1::StaticMethod(); | Class1::StaticMethod(); | ||
} | } | ||
</ | </kode> | ||
=Définir un symbole= | = Définir un symbole = | ||
Dans le code | Dans le code | ||
<kode lang='cpp'> | |||
< | |||
#define MON_SYMBOLE 1 | #define MON_SYMBOLE 1 | ||
</ | </kode> | ||
Ou lors de la compilation :<br/> | Ou lors de la compilation :<br/> | ||
Propriétés du projet → Propriétés de configuration → C/C++ → Ligne de commande → Ajouter /D "MON_SYMBOLE" | Propriétés du projet → Propriétés de configuration → C/C++ → Ligne de commande → Ajouter /D "MON_SYMBOLE" | ||
=Changer la version du Framework .NET ciblé= | = Changer la version du Framework .NET ciblé = | ||
Éditer le fichier de projet (*.vcxproj) → Ajouter ou modifier la ligne suivante : | Éditer le fichier de projet (*.vcxproj) → Ajouter ou modifier la ligne suivante : | ||
<kode lang='xml'> | |||
< | |||
<PropertyGroup Label="Globals"> | <PropertyGroup Label="Globals"> | ||
<TargetFrameworkVersion>2.0</TargetFrameworkVersion> | <TargetFrameworkVersion>2.0</TargetFrameworkVersion> | ||
</ | </kode> | ||
Avec VS2010, les projets C++ ciblent par défaut le Framework .NET 4. | Avec VS2010, les projets C++ ciblent par défaut le Framework .NET 4. | ||
[http://stackoverflow.com/questions/2921702/change-c-cli-project-to-another-framework-than-4-0-with-vs2010 StackOverflow] | [http://stackoverflow.com/questions/2921702/change-c-cli-project-to-another-framework-than-4-0-with-vs2010 StackOverflow] | ||
=Win32 vs CLR= | = Win32 vs CLR = | ||
*CLR → projet C++/CLI .NET utilisant du code managé | * CLR → projet C++/CLI .NET utilisant du code managé | ||
*Win32 → projet C++ natif utilisant du code non managé | * Win32 → projet C++ natif utilisant du code non managé | ||
= Erreurs de compilation = | = Erreurs de compilation = | ||
Ligne 91 : | Ligne 76 : | ||
[http://msdn.microsoft.com/fr-fr/library/8ef0s5kh%28VS.80%29.aspx Security Enhancements in the C RunTime]<br/> | [http://msdn.microsoft.com/fr-fr/library/8ef0s5kh%28VS.80%29.aspx Security Enhancements in the C RunTime]<br/> | ||
[http://msdn.microsoft.com/fr-fr/library/ms175759%28VS.80%29.aspx Secure Template Overloads] | [http://msdn.microsoft.com/fr-fr/library/ms175759%28VS.80%29.aspx Secure Template Overloads] | ||
Dernière version du 6 avril 2020 à 20:48
Chapeau ^
Officiellement appelé handle de suivi, il est utilisé pour la déclaration des objets de type de classe de référence.
int * pi1 = new int; // native heap Int32^ pi2 = gcnew Int32; // managed heap void Method(Array^ array1) { Array ^localArray; array1->Copy(array1, localArray, array1->Length); } |
Utiliser une DLL C#
Ajouter la référence
Clique-droit sue le projet → Références → Ajouter une nouvelle référence...
Utiliser la DLL dans le code
using namespace Espace1::Espace2; int main(array<System::String ^> ^args) { Class1 ^ object1 = gcnew Class1; Class1::StaticProperty->Method("argument"); Class1::StaticMethod(); } |
Définir un symbole
Dans le code
#define MON_SYMBOLE 1 |
Ou lors de la compilation :
Propriétés du projet → Propriétés de configuration → C/C++ → Ligne de commande → Ajouter /D "MON_SYMBOLE"
Changer la version du Framework .NET ciblé
Éditer le fichier de projet (*.vcxproj) → Ajouter ou modifier la ligne suivante :
<PropertyGroup Label="Globals"> <TargetFrameworkVersion>2.0</TargetFrameworkVersion> |
Avec VS2010, les projets C++ ciblent par défaut le Framework .NET 4. StackOverflow
Win32 vs CLR
- CLR → projet C++/CLI .NET utilisant du code managé
- Win32 → projet C++ natif utilisant du code non managé
Erreurs de compilation
error LNK2028: jeton non résolu
Ajoutez les bibliothèques manquantes :
Propriétés du projet → Propriétés de configuration → Éditeur de liens → entrée → Dépendances supplémentaires → hériter des paramètres par défaut du parent ou du projet.
error C2872: 'IServiceProvider' : symbole ambigu
L'interface IServiceProvider est définies à la fois dans "using namespace System;" et dans "#include <windows.h>".
Il faut déplacer le "using namespace System;" à l'intérieur du namespace ou il est utilisé.
NTDDI_VERSION setting conflicts with _WIN32_WINNT setting
Modifier la directive et mettre la bonne version de NTDDI
#define NTDDI_VERSION NTDDI_WIN7 |
cannot open include file 'afxres.h'
- Installer Microsoft Foundation Classes for C++ via Visual Studio
- Ou remplacer afxres.h par windows.h
Warnings de compilation
warning C4996: 'sprintf': This function or variable may be unsafe
Une nouvelle méthode sprinf_s plus sécurisée doit être utilisée.
Pour masquer ce type de warning il faut définir le symbole _CRT_SECURE_NO_DEPRECATE
Security Enhancements in the C RunTime
Secure Template Overloads