Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Intégration de Form C# dans un code C++ managed

6 réponses
Avatar
frharkonnen
Bonjour,

J'ai un projet composé d'un moteur en C++ Managed et d'une interface
graphique en C# sous forme d'assembly.

Dans Visual Studio 2003, comment faire pour pouvoir appeler les
fonctions de mon interface en C# à partir de mon programme en C++
managed ? Y'a t'il des fichiers à intégrer, une manière de faire ?

Merci par avance

6 réponses

Avatar
Alexis KARTMANN
Ajoute ton assembly C# comme reference (menu add reference du ton projet).
Ensuite tu peux utiliser tous les objets public de ton assembly.
Avatar
Harkonnen
"Alexis KARTMANN" <alexis(nospam)@kartmann.com> wrote in
news::

Ajoute ton assembly C# comme reference (menu add reference du ton
projet). Ensuite tu peux utiliser tous les objets public de ton
assembly.






Bonjour, et merci pour ta réponse. J'ai effectué cette manipulation, en
allant chercher via le menu Add Reference l'assembly concernée (via le
bouton "Browse")

Neanmoins, quand je lance l'application, j'ai une FileNotFoundException. Le
fichier non trouvé est l'assembly que j'ai pourtant référencée et qui
existe bien. De plus, je constate bien en visualisant la ligne de commande
de cl.exe, qu'elle a été rajoutée (/FD "C:documents and settingsprojet
form1.dll")

As tu une idée du pourquoi ?
Avatar
Laura Martignas
> Bonjour, et merci pour ta réponse. J'ai effectué cette manipulation,
en allant chercher via le menu Add Reference l'assembly concernée (via
le bouton "Browse")

Neanmoins, quand je lance l'application, j'ai une
FileNotFoundException. Le fichier non trouvé est l'assembly que j'ai
pourtant référencée et qui existe bien. De plus, je constate bien en
visualisant la ligne de commande de cl.exe, qu'elle a été rajoutée
(/FD "C:documents and settingsprojet form1.dll")

As tu une idée du pourquoi ?




Désolée, j'ai posté avec le compte de mon ami, mais ce message vient bien
de moi, Laura :)

En espérant que tu pourras me dépanner
Avatar
Paul Bacelar
Les assembly comme les dll n'ont pas été conçu pour être des librairies
statiques mais des modules exécutables réutilisables, et en cela elles
doivent garder leur intégrité en tant que modules exécutables autonomes.

Pourquoi vouloir absolument faire disparaître ces malheurs fichiers qui,
avec .NET et les msi, peuvent être mis dans le GAC sans que l'utilisateur
n'en prenne conscience

Je pense que votre problème est bien en amont, car votre problème exposé
semble bien artificiel.
--
Paul Bacelar


"Laura Martignas" wrote in message
news:

> Bonjour, et merci pour ta réponse. J'ai effectué cette manipulation,
> en allant chercher via le menu Add Reference l'assembly concernée (via
> le bouton "Browse")
>
> Neanmoins, quand je lance l'application, j'ai une
> FileNotFoundException. Le fichier non trouvé est l'assembly que j'ai
> pourtant référencée et qui existe bien. De plus, je constate bien en
> visualisant la ligne de commande de cl.exe, qu'elle a été rajoutée
> (/FD "C:documents and settingsprojet form1.dll")
>
> As tu une idée du pourquoi ?


Désolée, j'ai posté avec le compte de mon ami, mais ce message vient bien
de moi, Laura :)

En espérant que tu pourras me dépanner


Avatar
Laura Martignas
"Paul Bacelar" wrote in
news::

Les assembly comme les dll n'ont pas été conçu pour être des librairies
statiques mais des modules exécutables réutilisables, et en cela elles
doivent garder leur intégrité en tant que modules exécutables autonomes.

Pourquoi vouloir absolument faire disparaître ces malheurs fichiers qui,
avec .NET et les msi, peuvent être mis dans le GAC sans que l'utilisateur
n'en prenne conscience

Je pense que votre problème est bien en amont, car votre problème exposé
semble bien artificiel.



Bonjour, merci pour votre réponse.

Je comprends bien votre point de vue, placer l'assembly dans le GAC serait
surement la solution, mais pourquoi diable ai-je une erreur de fichier non
trouvé alors que le chemin spécifié est correct ?
Il s'agit d'une assembly qu'un seul programme utilisera, donc je vois pas
pourquoi j'encombrerais le GAC des utilisateurs avec une assembly qui ne
servira qu'une seule fois.
Avatar
Paul Bacelar
"Laura Martignas" wrote in message
news:
"Paul Bacelar" wrote in
news::

> Les assembly comme les dll n'ont pas été conçu pour être des librairies
> statiques mais des modules exécutables réutilisables, et en cela elles
> doivent garder leur intégrité en tant que modules exécutables autonomes.
>
> Pourquoi vouloir absolument faire disparaître ces malheurs fichiers qui,
> avec .NET et les msi, peuvent être mis dans le GAC sans que


l'utilisateur
> n'en prenne conscience
>
> Je pense que votre problème est bien en amont, car votre problème exposé
> semble bien artificiel.

Bonjour, merci pour votre réponse.

Je comprends bien votre point de vue, placer l'assembly dans le GAC serait
surement la solution, mais pourquoi diable ai-je une erreur de fichier non
trouvé alors que le chemin spécifié est correct ?



Il n'est pas correct car vous chercher un assembly, donc un module
exécutable dans les répertoires spécifié à cet effet et non dans une
hypothétique ressource incorporée dans votre exécutable.


Il s'agit d'une assembly qu'un seul programme utilisera, donc je vois pas
pourquoi j'encombrerais le GAC des utilisateurs avec une assembly qui ne
servira qu'une seule fois.



Vous résonnez à très cour terme. Toute dll, assembly, composant a commencé
par être utilisé par une application mais leur conception a été menée de
telle sorte qu'il était facile de les utiliser dans d'autres cas
d'utilisation. Ce n'est pas l'utilisation du code qui fait sa fonction mais
sa conception.

Si votre application veut utiliser ces assembly de manière privée, vous n'
avez qu'à les mettre dans le même répertoire que l'exécutable ou dans tout
autre répertoire que vous spécifierez dans le fichier de configuration



<configuration>

<runtime>

<assemblyBinding>

<probing>



Vous polluez peut-être le disque de l'utilisateur, mais avec les ressources
c'est pire car vous ne prenez plus de place sur disque dû à l'encodage des
ressources dans l'exécutable et vous ne pourrez plus hotfixer ou upgrader
vos assemblies.



Avec le GAC, vous polluez beaucoup moins la machine de l'utilisateur car une
seule instance d'une version particulière de chaque assembly est conservée
dans le GAC. Sans compter les vérifications et autres prétraitements que
vous épargnez à la CLR lors du démarrage de l'application.

--
Paul Bacelar