Unable to create DLLs: Getting DLL “is not a valid

2020-03-24 02:33发布

问题:

As the title says, I can't create a simple DLL. I'm using VS 2017 Community Edition Version 15.8.0. Here is the .dll code:

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

#include "$StdHdr.h"

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

Here is the code for the header, per the MS way to do things:

#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

Here is the driver code: (Update: The driver program is an .exe program.)

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

int main()
{
    Prc1();
}

It can't get any simpler than this. I get the following error message box when I try to run the code:

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

I can create .exe programs okay. I also got the error earlier this morning when I was running VS 2017 Version 15.7.5. Upgrading VS didn't do any good. I also tried to compile these as .c programs, but it didn't make any difference.

I had this problem on a couple occasions creating .exe programs using VS 2015. I don't recall what I did, but the problem disappeared. Any help would be appreciated.

TIA.

回答1:

Right click the project in your solution explorer that is the project for the executable and click "Set as startup project."

Note that "is not a valid Win32 application" is not a compile error or a link error, it is the message you get when you tried to debug something that is not executable.

You can only start executables. Executables consume dlls. These should be two seperate projects with two sets of corresponding project settings.