J'utilise MFC dans mon programme C ++ (à l'aide de Visual Studio 2008). Je dois appeler AfxgetinstanceHandle () au début de mon programme.
Cette fonction déclenche un point de rupture: p> La déclaration d'affirmation échoue. Y a-t-il quelque chose de spécial qui doit être fait pour initialiser le PS: J'utilise MFC dans une DLL partagée. P > edit strud> p> Mon code est comme celui-là: p> Je voudrais utiliser le AFXCURrentInstanceHandle Code> Avant d'essayer d'y accéder? P>
instance d'instance code> afin d'initialiser un
CCommodule code>, puis utilisez-le pour manipuler l'objet COM. p> p>
4 Réponses :
Ceci peut se produire si vous mélangez des modes de construction Unicode / MBCS ou de débogage / libération pour la DLL / Application. P>
Mon projet et toutes ses dépendances sont conformes à l'aide de MFC dans une DLL partagée, avec DLL de débogage multithread et utilisant des caractères multibytes. Cela peut être dû à quelque chose d'autre
Si vous utilisez le MFC, vous ne devez pas fournir de principal, WMain, _tmain ou WinMain - MFC fournit son propre point d'entrée. Mettez le code d'initialisation de votre classe dérivée de votre CWinApp. Si vous n'avez pas de classe dérivée CWinApp, vous n'avez pas créé correctement le projet - utilisez les assistants Visual Studio pour créer une application MFC. P>
Donc, il n'ya aucun moyen d'accéder à AFXGETInstanceHandle () sans avoir le tout objet CWinApp?
Je pense que je faisais quelque chose de mal, et je n'avais pas vraiment besoin de cela pour utiliser l'objet COM. Merci.
Downvote parce que ce n'est pas vrai. Pour les applications de fenêtre / GUI Votre déclaration est correcte, le projet Wizzard créera une classe dérivée CWinApp. Mais lorsque vous créez une application de console avec le support MFC, le code source avec une fonction principale (_tmain) est créé et AFXWinInit est appelé premier à configurer le MFC.
Utilisation:
AfxGetInstanceHandle();
Cela ne résout pas le problème pour moi. Mais la réponse de User2528794 fonctionne.
J'ai fabriqué une application de console avec MFC et j'ai aussi reçu le message. J'ai trouvé la solution, que vous avez besoin d'un "prologue" au début de votre principal (_tmain, etc.).
int main(int args, char* argv[]) //, char *envp[]) { // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; return 1; } AfxGetInstanceHandle(); // TODO: code your application's behavior here. ...
J'ai le même problème et je me demandais: ne devrait pas appeler à AfxinitextriceModule (...) code> initialiser le MFC? Je reçois toujours une erreur lorsque vous appelez
AFXGETInstanceHandle () Code>. Si j'ajoute
˙AfxwinInit (...) code> erreur est parti.