Visual C++
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