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

[VS2005] import de DLL et version Debug vs Release

2 réponses
Avatar
David Marec
Bonjour,

je découvre (rapidement) le langage C#, pour développer un petit
composant DotNET à intégrer dans une application.

Ce composant n'est en fait lui-même que le conteneur d'une technologie
que je dois fournir à l'application tierce.

J'ai donc mis à disposition cette technologie dans une DLL que j'importe
dans le composant.
Elle se compose de deux parties principales, une gestion de ressources
synchrone et un serveur TCP qui génère des callbacks.


J'ai donc développé un composant et une application de test "classique".

Tout ceci fonctionne bien lorsque j'utilise la DLL dans sa version Debug.
En effet, aucun callback n'est transmis ( ou n'est lu ?) si j'importe
les fonctions de la version Release de la DLL.
Par contre, les actions sychrones fonctionnent.


Des idées ?

2 réponses

Avatar
David Marec
David Marec a écrit :

> [Marche pô en Release]
Des idées ?



Bon, il suffit souvent de poser la question par écrit pour trouver la
réponse.


Il s'agit tout simplement d'une incompatibilité de type.

les "long" C++ et CSharp ne sont pas de la même taille, pas plus que les
"int".


Existe il un tableau d'équivalence quelque part entre les types du C++
et ceux du C# ?

Pour les chaines le " const char*" en entrée et le "bstr_t" en sortie de
la DLL fonctionne à priori.



--
y'a de l'écho.
Avatar
Paul Bacelar
"David Marec" wrote in message
news:duh10m$8fi$
David Marec a écrit :

> [Marche pô en Release]
Des idées ?



Bon, il suffit souvent de poser la question par écrit pour trouver la
réponse.


Il s'agit tout simplement d'une incompatibilité de type.

les "long" C++ et CSharp ne sont pas de la même taille, pas plus que les
"int".


Existe il un tableau d'équivalence quelque part entre les types du C++
et ceux du C# ?




long et int n'ont pas de longueur définis en C++ contrairement au C#.
Utilisez des types C++ de longueur défini à la place de long et int, comme
__int32 et __int64.
http://www.asp-magazine.com/fr/aspnet/langages/structure1.asp

Pour les chaines le " const char*" en entrée et le "bstr_t" en sortie de
la DLL fonctionne à priori.





Utilisez "MarshalAs", cela sera nettement plus sûr

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcwlkcominteroppart1cclienttutorial.asp



--
y'a de l'écho.







Evitez ce genre de remarque, si vous voulez des réponses ;-))

--
Paul Bacelar
MVP VC++