无法创建DLL:正在获取DLL“不是有效的Win32应用程序”

时间:2018-08-15 18:23:14

标签: c++ c visual-studio

正如标题所述,我无法创建简单的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。

2 个答案:

答案 0 :(得分:1)

在解决方案资源管理器中的可执行文件项目上单击鼠标右键,然后单击“设置为启动项目”。

请注意,“不是有效的Win32应用程序”不是编译错误或链接错误,它是您尝试调试不可执行的内容时收到的消息。

您只能启动可执行文件。可执行文件消耗dll。这些应该是两个单独的项目,具有两组相应的项目设置。

答案 1 :(得分:0)

我怀疑您使用的是 32 位 dll。如果您拥有 64 位 Windows 操作系统,那么您也必须拥有此 dll 的 64 位版本。有时,即使您已经拥有 64 位 dll,它也无法运行,因此请尝试此 dll 的其他版本,即此 dll 的 32 位版本。 与此同时,对您的 unicurse.py 文件也做一些小改动。 PFB要添加的代码:

import ctypes
pdlib = ctypes.CDLL("pdcurses.dll")

虽然这行代码在某个条件的某个地方,但是放在上面可以帮助您检查dll是否已加载。