Visual C++ 2010 Express 不生成 DLL 文件

Posted

技术标签:

【中文标题】Visual C++ 2010 Express 不生成 DLL 文件【英文标题】:Visual C++ 2010 Express doesn't generate DLL file 【发布时间】:2012-09-19 07:23:53 【问题描述】:

我有一个 Visual C++ DLL 项目(只是一个项目,没有父解决方案)并且需要构建 DLL。

构建命令不会生成任何错误消息。在 Debug 文件夹中有mylibrary.lib,但没有mylibrary.dll

我查看了Visual Studio 2010 C++ DLL project - No output DLL file!,但我的情况与那个问题不同。在构建输出中,没有类似

的消息

MFCInterop.vcxproj -> C:\temp\sotest\Debug\MFCInterop.dll

只有

MFCInterop.vcxproj -> C:\temp\sotest\Debug\MFCInterop.lib

为了生成 DLL 文件,我该怎么做?

【问题讨论】:

您确定要构建 DLL 吗?也许您在项目设置中设置了静态库生成。 【参考方案1】:

我可能是生成的dll但不在Debug文件夹中。您应该为项目设置输出目录。为此转到

项目属性--->常规--->输出目录--->.\Debug

【讨论】:

谢谢!对我来说,.dll 出现在 SolutionDirectory\Debug 中,而不是我预期的 SolutionDirectory\ProjectDirectory\Debug【参考方案2】:

如果您的 DLL 没有公开任何内容,则可能会发生这种情况。 通常应使用以下构造公开 DLL 的公共 API 类:

#ifdef YOUR_DLL_EXPORTS
    #define YOUR_API __declspec(dllexport)
#else
    #define YOUR_API __declspec(dllimport)
#endif 

class YOUR_API ClassToExpose ;

然后你必须在 DLL 项目中定义 YOUR_DLL_EXPORTS。 如果您没有公开的东西,则不会生成 DLL。我希望这会有所帮助。

【讨论】:

以上是关于Visual C++ 2010 Express 不生成 DLL 文件的主要内容,如果未能解决你的问题,请参考以下文章

基于 microsoft visual c++ express 2010 的 64 位构建

microsoft visual c++6.0和micorostf visual c++ 2010 express有啥区别

如何使用 Visual C++ 2010 Express 从 32 位环境为 64 位 Windows 编译 Qt?

Visual Studio C++ 2010 Express中的程序错误

Visual C++ 2010 Express 中默认的 C++0x 模式是啥?

在 Visual C++ Express 2010 中找不到 .exe 文件