[VS2005] import de DLL et version Debug vs Release
2 réponses
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.
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.
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
Evitez ce genre de remarque, si vous voulez des réponses ;-))
-- Paul Bacelar MVP VC++
"David Marec" <david.null@davenulle.org> wrote in message
news:duh10m$8fi$1@news.tiscali.fr...
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
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