J'ai récemment commencé à travailler avec Visual Studio cet été, principalement sur des projets liés à CUDA et OpenCV. Avant cela, j'avais fait mon développement sur Linux pour CUDA en utilisant Makefiles et le makefile common.mk de NVIDIA.

Ma question est donc la suivante: je n'ai pas été en mesure de comprendre pour la vie de moi quelle est la différence entre certains des différents modèles de projet. Je sais que j'ai dû utiliser "Empty Project" dans l'onglet général des options Visual C ++, mais c'est plus d'essais et d'erreurs, plutôt que de savoir réellement ce qui se passe ...

10
Amina Kaloauzi 3 nov. 2019 à 20:50

2 réponses

Lors de la création d'un projet Win32, le sous-système de l'éditeur de liens est défini sur Windows. Lors de la création d'un projet C ou C ++ vide, le sous-système est défini sur console. De même, le point d'entrée dans les paramètres des projets Win32 attend un WinMain ou DllMain tandis qu'une console attend un int main. Un CLR vous permet de mélanger C ++ et .NET, ce qui est généralement déconseillé.

Un sous-système Windows peut cibler les exécutables, les DLL, les bibliothèques ou les fichiers pilote / natif (sys). Alors qu'un sous-système de console cible les exécutables binaires de la console. WinMain est généralement utilisé lors de la création d'une application Windows réelle à l'aide du CreateWindowEx API, établissement de rappels de messages et insertion d'une boucle de gestionnaire de messages.

Un sous-système de console avec int main peut également créer une application Windowed, mais vous feriez mieux de le faire avec WinMain.

Un projet vide Dll définit le sous-système sur Windows et définit la sortie compilée sur (.dll) ainsi que le point d'entrée sur DllMain / APIENTRY et une bibliothèque statique fera la même chose que la DLL, sauf qu'elle définira la sortie sur (. lib).

La définition du projet sur le sous-système natif nécessite le Kit de développement de pilotes Windows pour compiler les pilotes.

0
Nina 3 nov. 2019 à 18:12

Un projet Win32 est utilisé si vous souhaitez vous retrouver avec une DLL ou une application Win32 utilisant généralement le WinAPI nu. Un projet Common Language Runtime (CLR) est utilisé pour créer un projet C ++ / CLI, c'est-à-dire utiliser C ++ / CLI pour cibler la plate-forme .NET.

La principale différence entre les projets est ce que Visual Studio propose en termes de fichiers pré-créés. Une application Win32 fenêtrée par exemple (ce que vous obtenez lorsque vous choisissez un projet Win32, mais pas une DLL) est créée avec un fichier de ressources (menus, accélérateurs, icônes, etc.) et du code par défaut pour créer et enregistrer une classe de fenêtre et pour instancier cette fenêtre.

5
Forest J. Handford 19 oct. 2015 à 16:26