Bonjour,

Je cherche à utiliser une fonction d'une dll (buildée en C#) en c++. Voici la fonction en C#

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
namespace WMIString
{
    public class WMI
    {
        public string GetString()
        {
            string maString= "";
            //...
            return maString;
        }
    }
}
Dans les propriétés du projet, j'ai mis sous l'onglet applications : target framework : ".NET Framework 2". Sous assembly information, j'ai coché "Make assembly COM-visible"
Dans les build options, j'ai coché, "register for COM interop". Je devrais donc pouvoir utiliser cette dll dans un autre language, non?
J'ai ensuite builder la dll (appelons la madll.dll) sans erreur

Je veux ensuite charger cette dll depuis un projet c++ (j'utilise Qt également). Pour cela j'ai défini dans mon .h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
typedef std::string (WINAPIV *WMI_GETSTRING)(VOID);
et dans mon .cpp je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
HINSTANCE hdll;
hdll = LoadLibraryW( L"madll.dll" );
if(hdll) 
	ui.textEdit->append("madll.dll loaded");
else
	ui.textEdit->append("madll.dll not loaded");
 
WMI_GETSTRING WMIGetString;
WMIGetString= (WMI_GETSTRING)GetProcAddress( hdll, "GetString");
if( !WMIGetString)
       ui.textEdit->append("cannot find function");
Cela compile, et je peux voir que la dll est bien chargée correctement (le message "madll.dll loaded" s'affiche), cependant la fonction n'est pas trouvée.

Pourquoi?
Merci d'avance pour votre aide