引用头文件创建引用dll的应用程序时出错

Posted

技术标签:

【中文标题】引用头文件创建引用dll的应用程序时出错【英文标题】:Error referencing header file to create an application to reference dll 【发布时间】:2012-02-20 10:22:41 【问题描述】:

我一直在尝试遵循 Microsoft Visual Studio 的演练,演练:Creating and Using a Dynamic Link Library,因为我是初学者。

但是,我不断收到难以理解和解决的错误。

首先它一直说有错误:

警告 C4627: '#include': 查找预编译头使用时跳过 1> 向“StdAfx.h”添加指令或重建预编译头文件

所以我做了一些在线搜索,看来我应该在该行中添加:

#include "StdAfx.h"

进入我在代码顶部所做的 .cpp 文件 MyExecRefsDll.cpp。

然后它出现了错误:

致命错误 C1083:无法打开包含文件:'MathFuncsDll.h':没有这样的文件或目录

我已经包含了这个头文件的参考,这是我真正想要使用的头文件。我可以在下面看到这个参考: MyExecRefsDll 属性页\配置属性\c/c++\General,然后在我拥有的其他包含目录旁边,C:..etc..\DynamicLibrary\MathFuncsDll\MathFuncsDll.h

我读到了关于关闭使用预编译头的信息。这是我需要做的,但我不知道该怎么做?

我还阅读了一些关于使用 .lib 而不是 .dll 来引用动态链接库的内容。我尝试了这个,更改了以下 dll 的引用: MyExecRefsDll 属性页\配置属性\调试,在我输入的环境旁边,PATH=C:\Users...etc...\DynamicLibrary\Debug\MathFuncsDll.dll 我尝试将文件名的末尾改为 .lib,但没有任何改变,错误仍然是查找 MathFuncsDll.h 文件的问题。

任何人都可以建议我如何使头文件工作以便我可以成功构建解决方案吗?提前致谢。

【问题讨论】:

您只是没有准确地遵循演练中的说明。再做一次。 我确实尽可能准确地按照演练进行了两次。如果我遗漏了什么,那么我一定是误解了我应该输入的内容,因此错误,因此我不明白我哪里出错了? 是的,我同意@HansPassant,'hde' 没有遵循确切的步骤,也不需要更改环境 PATH 变量。按照 MSDN 教程的确切步骤进行操作即可。确保您正在配置正确的构建类型:调试/发布。最好同时配置两者! 【参考方案1】:

Visual Studio 仅在找不到头文件时才会显示该错误。为了解决这个问题,您应该检查您的项目设置。在您的问题中,您提到“我有,C:..etc..\DynamicLibrary\MathFuncsDll\MathFuncsDll.h”,在 Additional Include 目录中,您应该只有目录的名称,例如“C:..etc ..\DynamicLibrary\MathFuncsDll\"。 检查该文件是否确实存在,并仔细检查您是否正在编辑与当前构建配置相关的项目设置,即如果您正在构建 Debug|Win32,则应在此处更改 Additional Include Directories。

【讨论】:

我有 Active Release 构建并且我修改了构建的调试类型。因此,我收到包含目录的错误。现在为我工作。【参考方案2】:

我遇到了完全相同的问题。我认为 VisualStudio 10 中存在错误。

这是演练中麻烦的一步:

要引用动态链接库的头文件,必须 修改包含目录路径。为此,从属性 页面对话框,展开配置属性节点,然后是 C/C++ 节点,然后选择常规。在其他包含目录旁边,键入 在 MathFuncsDll.h 头文件所在位置的路径中。

在这里,Visual Studio 会给您一个“浏览”按钮,以便您可以导航到所需的目录并选择它。这样做会将整个路径插入到Additional Include Directories

但是,这仍然对我不起作用。

我可以让它编译的唯一方法是输入相对路径:

..\..\MathFuncsDll\MathFuncsDll\

【讨论】:

【参考方案3】:

这个问题有一个非常简单的解决方案。

在 Visual Studio 2010 下

Project->Properties->Configuration Properties->C/C++->Precompiled Headers

将“Precompiled Header”属性的值设置为“Not Using Precompiled Headers”,按照列出的说明进行操作,演示应该不会出错。

【讨论】:

以上是关于引用头文件创建引用dll的应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

从 .net 核心控制台应用程序引用 .net 标准 2.0 库中的 dll 时出错

无法添加对 dll 的引用

引用自定义头文件时时出错

在VB6中编译DLL时“加载DLL时出错”

.net中如何引用Dll文件?

C 语言动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )