web-dev-qa-db-fra.com

Impossible de créer des DLL: obtenir DLL "n'est pas une application Win32 valide"

Comme le titre l'indique, je ne peux pas créer une simple DLL. J'utilise VS 2017 Community Edition version 15.8.0. Voici le code .dll:

#include "stdafx.h"
#include "InvWin32App.h"

#include "$StdHdr.h"

void Prc1()
{
    printf("ran procedure 1\n");
}

Voici le code de l'en-tête, selon la façon dont MS fait les choses:

#ifdef INVWIN32APP_EXPORTS
#define INVWIN32APP_API __declspec(dllexport)
#else
#define INVWIN32APP_API __declspec(dllimport)
#endif

#ifdef __cplusplus
extern "C" {
#endif

        INVWIN32APP_API  void Prc1();

#ifdef __cplusplus
}
#endif

Voici le code du pilote: (Mise à jour: le programme du pilote est un programme .exe.)

#include "pch.h"
#include "InvWin32App.h"

int main()
{
    Prc1();
}

Cela ne peut pas être plus simple que cela. J'obtiens la boîte de message d'erreur suivante lorsque j'essaie d'exécuter le code:

Unable to start program
program name.dll
program name.dll is not
a valid Win32 application

Je peux créer des programmes .exe bien. J'ai également eu l'erreur plus tôt ce matin lorsque j'utilisais VS 2017 version 15.7.5. La mise à niveau de VS n'a pas fait de bien. J'ai également essayé de les compiler en tant que programmes .c, mais cela n'a fait aucune différence.

J'ai eu ce problème à plusieurs reprises lors de la création de programmes .exe à l'aide de VS 2015. Je ne me souviens pas de ce que j'ai fait, mais le problème a disparu. Toute aide serait appréciée.

TIA.

6
J. Toran

Cliquez avec le bouton droit sur le projet dans votre explorateur de solution qui est le projet de l'exécutable et cliquez sur "Définir comme projet de démarrage".

Notez que "n'est pas une application Win32 valide" n'est pas une erreur de compilation ou une erreur de lien, c'est le message que vous obtenez lorsque vous essayez de déboguer quelque chose qui n'est pas exécutable.

Vous ne pouvez démarrer que des exécutables. Les exécutables consomment des DLL. Il doit s'agir de deux projets séparés avec deux ensembles de paramètres de projet correspondants.

3
Christopher Pisz