C ++ / CLI: use LoadLibrary + GetProcAddress com um exe

té agora, eu tinha algum tipo de mecanismo de plug-in no qual carregava dlls usando LoadLibrary e GetProcAddress para criar um objeto concreto e retornar uma interface comum. Isso funcionou bem até que eu decidi que uma das DLLs deveria ser um exe.

Documentação da LoadLibrary diz que também pode ser usado para exe, então tentei. O exe é carregado sem erros, como GetProcAddress. Mas quando tento chamar o construtor do meu objeto concreto, recebo uma violação de acess

Eu pensei que isso iria acontecer porque carregar um exe não carrega todas as DLLs que ele usa. Tentei carregá-los usando o LoadLibrary, mas recebi o mesmo erro. Algum conselho sobre isso?

Aqui está o meu código (C ++ / CLI misto):

Interface* MCFactory::LoadInstanceFromAssembly( String ^ concreteAssemblyName, String ^ param ){
    string fullPathToAssembly = "";
    fullPathToAssembly += FileSystem::GetPathToProgramDirectory();
    fullPathToAssembly += "\\" + marshal_as<string>(concreteAssemblyName);

    MODULE hDLL = AssemblyLoader::GetInstance().LoadAssembly( fullPathToAssembly ); 

    Interface* pObject = NULL;
    if (hDLL != NULL){
        t_pCreateInstanceFunction pCreateInstanceFunction =
            (t_pCreateInstanceFunction) ::GetProcAddress (hDLL, CREATE_INSTANCE_FUNCTION_NAME.c_str());

        if ( pCreateInstanceFunction != NULL ){
            //Yes, this assembly exposes the function we need
            //Invoke the function to create the object
            pObject = (*pCreateInstanceFunction)( marshal_as<string>(param) );              
        }
    }           
    return pObject;
}

(AssemblyLoader :: GetInstance (). LoadAssembly é apenas um invólucro para :: LoadLibrary)

questionAnswers(3)

yourAnswerToTheQuestion