Salut à tous,

Je bosse actuellement sur l'UI windows de mupen64plus (pour ceux qui connaissent).

Je rencontre une difficulté avec les conversion de type...

Je vous explique, voici une fonction C tiré de l'UI console du projet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void * osal_dynlib_getproc(m64p_dynlib_handle LibHandle, const char *pccProcedureName)
{
    if (pccProcedureName == NULL)
        return NULL;
 
    return GetProcAddress(LibHandle, pccProcedureName);
}
GetProcAddress renvoit donc un void*.

Quand on compile en Visual Studio (le projet windows est en Visual Studio), ça fonctionne. Pas de problèmes.


Moi je bosse sur l'interface graphique qui est en Qt4. J'utilise donc qmake et mingw32-make pour compiler.

Nous avons besoins, pour cette UI de faire grosso mode la même chose que pour l'interface console: Charger la lib mupen64plus.dll, qui contient le "core" de l'émulateur.

Voici la méthode:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void * LibraryLoader::resolve(const char * name)
{
    if (!private_->pluginHandle)
        return 0;
 
    return GetProcAddress(private_->pluginHandle, name);
}
Avec comme définition pour pluginHandle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
m64p_dynlib_handle pluginHandle;
Et là, ça crash avec ça comme message:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
src\libraryloader_win32.cpp:34: error: invalid conversion from 'int (*)()' to 'void*'
En lisant la doc msdn: http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
Il est précisé que GetProcAddress renvoit l'adresse de la fonction ou variable exporté.
Serait-ce une subtilisé du compilo?

Visual Studio renverrait bien l'adresse (ça expliquerai pourquoi l'UI console compile sans problème), et mingw32 renverrait un int? C'est possible ça?

Si l'un d'entre vous pourrait éclairer la lanterne? Parce que là je suis dans l'impasse.

Merci d'avance et bonne journée à tous!