Désolé, ce n'est pas exactement une réponse, mais le problème a été résolu.
Pour commencer, je viens de remarquer une question similaire ici: Erreur C ++ LoadLibrary () 3765269347. Je pense que celui-ci donne plus de détails et vaut le détour si vous êtes dans une position similaire à ce que j'étais.
Mes remerciements à @whozcraig, @danieldaranas et à tous ceux qui ont fait des commentaires utiles. Pour d'autres personnes qui lisent ceci, il y a un bon article sur Hresult qui développe leurs points sur Wikipedia: http://en.wikipedia.org/wiki/hresult.
Dans mon cas, le problème a disparu aussi mystérieusement qu'il est apparu. J'ai créé une classe C ++ pour appeler la DLL régulièrement. Mon effort d'origine a chargé la DLL immédiatement avant le premier appel et l'a mis en cache en mémoire. C'est la même chose en principe à la façon dont cela a fonctionné pendant plus d'un an. Cela a abouti à l'erreur mystérieuse ci-dessus.
Je l'ai refactorisé pour charger la DLL pendant la construction, mais pour en extraire la fonction au moment de l'exécution. Cela fonctionne apparemment et est probablement une meilleure façon de le faire (charger la DLL pendant la construction, la libérant pendant la destruction). Comme il se passe très peu de choses entre la construction et le premier appel à la DLL, je ne vois pas pourquoi une méthode devrait produire une erreur de système d'exploitation, et l'autre ne le fait pas.