web-dev-qa-db-ja.com

DLLを作成できません:取得DLL "有効なWin32アプリケーションではありません"

タイトルのとおり、単純なDLLを作成することはできません。 VS 2017 Community Editionバージョン15.8.0を使用しています。 .dllコードは次のとおりです。

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

#include "$StdHdr.h"

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

これは、MSによる処理方法ごとのヘッダーのコードです。

#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

ドライバーコードは次のとおりです(更新:ドライバープログラムは.exeプログラムです)。

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

int main()
{
    Prc1();
}

これ以上簡単なものはありません。コードを実行しようとすると、次のエラーメッセージボックスが表示されます。

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

.exeプログラムを作成できます。また、今朝、VS 2017バージョン15.7.5を実行していたときにエラーが発生しました。 VSをアップグレードしても効果はありませんでした。また、これらを.cプログラムとしてコンパイルしようとしましたが、違いはありませんでした。

この問題は、VS 2015を使用して.exeプログラムを作成するときに何度か発生しました。自分が何をしたか思い出せませんが、問題は解消されました。任意の助けいただければ幸いです。

TIA。

6
J. Toran

実行可能ファイルのプロジェクトであるソリューションエクスプローラーでプロジェクトを右クリックし、[スタートアッププロジェクトとして設定]をクリックします。

「有効なWin32アプリケーションではありません」はコンパイルエラーやリンクエラーではないことに注意してください。これは、実行可能でないものをデバッグしようとしたときに表示されるメッセージです。

実行可能ファイルのみを開始できます。実行可能ファイルはDLLを消費します。これらは、対応するプロジェクト設定の2つのセットを持つ2つの別個のプロジェクトである必要があります。

3