【发布时间】:2019-01-22 15:54:41
【问题描述】:
正如标题所说,我无法创建一个简单的 DLL。我正在使用 VS 2017 社区版 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。
【问题讨论】:
-
你不能直接运行dll,通常它们会被动态加载到exe中。
-
Windows 是正确的。您不能直接运行 dll。您可能打算将应用程序(您调用驱动程序代码)设置为启动项目而不是 dll。
-
谢谢。我没有直接运行 .dll。我使用驱动程序代码,这是一个.exe来调用.dll。
-
您的错误信息似乎与此冲突。其中哪个项目是启动项目?
-
我今天实在是太傻了。启动程序是 .dll,而不是 .exe。非常感谢,因为它解决了这个问题。
标签: c++ c visual-studio