Maison >développement back-end >C++ >Pourquoi mon projet MinGW C génère-t-il une erreur « Référence non définie à WinMain » lors de l'utilisation de wWinMain ?
Résolution d'une référence non définie à WinMain à l'aide de wWinMain dans MinGW (C)
Lors de la tentative de remplacement de int main() par int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow) dans une application C utilisant MinGW comme compilateur, les utilisateurs peuvent rencontrer le message d'erreur « référence non définie à WinMain ». Cette erreur est due à des divergences entre les bibliothèques de démarrage CRT de Visual C et MinGW, qui ne prennent pas en charge le point d'entrée wWinMain de manière native.
Solution :
Pour les versions plus récentes de MinGW , l'ajout de l'option de liaison -municode à la ligne de commande, des options de liaison dans l'EDI ou Makefile permettra l'utilisation de wWinMain.
g++ other_options_and_arguments -municode
Cependant, pour les anciennes versions de MinGW qui ne prennent pas en charge -municode, la solution consiste à revenir à l'utilisation de la fonction WinMain standard. Dans ce cas, le code peut être modifié comme suit :
<code class="c++">int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR pCmdLine, int nCmdShow)</code>
Remarque :
Bien que Visual C prenne en charge le point d'entrée wWinMain où le paramètre "lpCmdLine" est un "LPWSTR", il introduit une complexité supplémentaire en nécessitant l'utilisation de définitions de préprocesseur et peut être plus fastidieux à utiliser. Par conséquent, il est recommandé d'utiliser la fonction WinMain standard lorsque vous travaillez avec MinGW, à moins que les exigences spécifiques du programme n'exigent l'utilisation de la ligne de commande Unicode.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!