Visual Studio 引用头文件和源文件

Visual Studio referencing header and source files

提问人:Michael 提问时间:2/19/2014 更新时间:2/19/2014 访问量:984

问:

我在Visual Studio中有一个名为“Framework”的C项目。

Framework 项目应该包含应该在不同项目之间共享的通用代码。

我还有另一个项目(我们称之为 A),它应该使用框架中的代码。

假设 Framework 项目有一个名为 DAL.h 的标头,其中有一个名为 OpenFile 的函数的声明,这个函数是在 DAL.c 中实现的。

我正在尝试将 DAL.h 包含在我的 A 项目中并使用 OpenFile,但我收到以下错误:未解析的外部符号_OpenFile

我确实知道编译器未能找到 OpenFile 的实现。

我的问题是,在像这里描述的那样的情况下,最佳实践是什么?

我应该“添加现有项目”并将 DAL.c 添加到我的 A 项目中吗?(这修复了错误..)

我确实尝试将包含DAL.c的文件夹添加到“其他源文件夹”,但这无济于事。

多谢 迈克尔。

C 标头 包括 visual-studio-2013 unresolved-external

评论


答:

1赞 parrowdice 2/19/2014 #1

要使用函数的编译代码,它需要存在于某个地方。OpenFile

您似乎有两种选择:

1) 如果您希望编译后的代码成为二进制文件的一部分,则需要包含源文件,以便它可以作为项目的一部分进行编译。

2)如果你不希望它被构建到你的项目中,并且从它的声音来看,你并不像你所说的那样是“应该在不同项目之间共享的通用代码”,那么“框架项目”应该编译成一个库。在这种情况下,只需包含 DAL.h 头文件,并将“框架项目”库导入到项目中,以便项目可以将调用链接到库中的实现。OpenFile

评论

0赞 Michael 2/19/2014
我希望 OpenFile 的源代码成为我的二进制文件的一部分。我不想使用额外的库(不想使用dll的)..我唯一的选择是将源文件作为项目的一部分吗?这是一个丑陋的解决方案......编译器有没有办法自己找到源代码?因为我添加了头文件..
1赞 parrowdice 2/19/2014
@MichaelEngstler:如果您希望源代码成为项目的一部分,则需要将源代码作为项目的一部分。源文件包括头文件,头文件不包括源文件。另外,除了您不想使用dll之外,是否有特定原因不能使用dll?你的情况几乎就是它们的设计目的,它可能会让你的生活更轻松......