OVH Cloud OVH Cloud

Utilisation de lib dans C#.

5 réponses
Avatar
GG
Bonjour,

Je viens de passer de visual C++ à visual C#.
Dans les application en C++, dans "Project Settings" --> Link -->
Object/Library modules : j'inscrivais le nom de la librairie externe dont
j'avais besoin et ensuite, dans mes programmes, il etait possible d'utiliser
ces fonctions integrées.

Comment faire dans Visual C# pour utiliser ces mêmes fonctions ?
Quelqu'un aurait-il un exemple ?

Dans les application en C++, j'utilisait un fichier .h qui contenait les
constantes de mon programme.

Comment faire dans Visual C# ?

Merci pour votre aide.

5 réponses

Avatar
Ambassadeur Kosh
> Je viens de passer de visual C++ à visual C#.
Dans les application en C++, dans "Project Settings" --> Link -->
Object/Library modules : j'inscrivais le nom de la librairie externe dont
j'avais besoin et ensuite, dans mes programmes, il etait possible
d'utiliser
ces fonctions integrées.



dans ton projet, tu as les referencies.
c'est la que tu ajoutes les assemblies declarés dans le GAC, les assemblies,
les objets COM...

Comment faire dans Visual C# pour utiliser ces mêmes fonctions ?
Quelqu'un aurait-il un exemple ?



rien de compliqué. bouton droit sur les referencies, et ajouter.

Dans les application en C++, j'utilisait un fichier .h qui contenait les
constantes de mon programme.




public class Math
{
public const double Pi = 3.1415 ;
public static readonly string Special = ReadFromConfig("Special") ;

private static string ReadFromConfig(string name) { ... }
}
...
public class Test
{
public double f(double x)
{
double y = x*x*Math.Pi ;
}
}

tout passe par des classes. qu'elles soient dans ton projet, ou dans une dll
(assembly) visible par le projet, c'est pareil. plus de bricolage textuel à
deux balles avec les .h.
Avatar
GG
Donc, si j'ai tout compris, je doit donc modifier les fichier .h que j'ai:
#define TOTO_OUI 0
#define TOTO_NON 1

en

public const int TOTO_OUI = 0;
public const int TOTO_NON = 1;

Pour les librairies dont j'aimerais me servir, la dll n'est pas reconnue
(message indiquant que ce n'est pas un assembly valide ou d'un composant .COM)
Y a-t-il une procedure autre que "Ajouter une reference ..." ?

Merci
Avatar
Lloyd Dupont
> plus de bricolage textuel à deux balles avec les .h.



bien parler Ambassadeur Kosh ;-)
Avatar
P. RICHARDOT
GG avait écrit le 21/07/2005 :
Donc, si j'ai tout compris, je doit donc modifier les fichier .h que j'ai:
#define TOTO_OUI 0
#define TOTO_NON 1

en

public const int TOTO_OUI = 0;
public const int TOTO_NON = 1;

Pour les librairies dont j'aimerais me servir, la dll n'est pas reconnue
(message indiquant que ce n'est pas un assembly valide ou d'un composant
.COM) Y a-t-il une procedure autre que "Ajouter une reference ..." ?

Merci



Salut,

si cest pas une dll ".net" et pas aussi une dll COM,
il faut faire un wrapping.

Regarde du coté du pInvoke, c'est peut etre un terme barbare pour toi,
mais c'est ce qui permet de dialoguer entre les 2 mondes si je puis
dire
(win32 et .net)

Patrick.

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
GG
Merci pour vos réponses, je vai maintenant tester. Ca n'a pas l'air simple
mais ca devrait aller.



"Lloyd Dupont" a écrit :

haha.....
il semble que ce que tu essaye de faire c'est d'utiliser une librarie C comme si de rien n'etait avec ton project C#.

C'est un tout autre sujet!

=> "Interop"
ca demande un peu de travail, je te conseille de consulter la documentation a ce sujet.

En gros il te faut redeclarer en C# les fonction C (ben oui, vu que tu utilise pas les headers, il faut bien lui dire au C# a quoi ca ressemble ces fonctions.....)

je te refere a ce site pour avoir vite faite les declaration pour l'API Win32:
http://pinvoke.net

sinon voila un exemple de a quoi ca ressemble:
using System.Runtime.InteropServices;

public class FormInvisible : Form
{
const int GWL_USERDATA = (-21);
const int GWL_ID = (-12);

const int WS_EX_TRANSPARENT = 0x20;
const int WS_EX_DLGMODALFRAME = 0x1;
const int WS_EX_NOPARENTNOTIFY = 0x4;

[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
}

"GG" wrote in message news:
>
> Donc, si j'ai tout compris, je doit donc modifier les fichier .h que j'ai:
> #define TOTO_OUI 0
> #define TOTO_NON 1
>
> en
>
> public const int TOTO_OUI = 0;
> public const int TOTO_NON = 1;
>
> Pour les librairies dont j'aimerais me servir, la dll n'est pas reconnue
> (message indiquant que ce n'est pas un assembly valide ou d'un composant .COM)
> Y a-t-il une procedure autre que "Ajouter une reference ..." ?
>
> Merci
>
>