在多项目中链接问题Visual Studio 2005解决方案

问题描述:

我正在研究包含多个项目的解决方案文件(VS 2005)。在多项目中链接问题Visual Studio 2005解决方案

现在有两个我关心的项目 - 一个叫做核心,另一个叫做日志。

核心项目是启动项目,日志项目的核心在其项目依赖关系中打勾。

我有核心项目的两个文件 - AB.h(声明)和AB.cpp(定义)

许多其他CPP从核心项目是指AB.h文件,并没有发现问题的定义AB.cpp。

现在出现这个问题。我在日志项目中有一个名为CD.cpp的cpp文件,它需要引用AB.h.我已经将AB.h的include目录添加到核心和日志项目中(AB.cpp也驻留在同一个文件夹中)

此外,日志项目的“其他库目录”参数中包含$(OutDir)项目设置的链接器部分。核心项目也编译成一个dll,但在同一个文件夹中还有一个core.lib文件夹和其他垃圾文件。解决方案编译为发布版本。

在CD.cpp中,当我右键单击#include“AB.h”行时,它将我带到core文件夹中的.h文件。到目前为止,一切都很好。但是,当我尝试编译解决方案时,日志项目无法正确构建,显示这两个链接器错误。

log.obj:错误LNK2001:无法解析的外部符号 “类了myNameSpace :: myClass的将myInstance”(将myInstance @@ 3VmyClass @了myNameSpace @@?A)

log.obj:错误LNK2001:无法解析的外部符号“布尔infFlag“(?infFlag @@ 3_NA)

该类是包含在AB.h中的h文件的一部分(在AB.cpp中声明并在CD.cpp中包含为extern的实例,infFlag在AB.cpp中声明并且在CD.cpp中声明为extern。

我该如何让日志正确生成?谢谢


好的。你们需要更多的细节。当然。

单一解决方案文件。多个项目。

[核心]

包括AB.h和AB.cpp

-AB.h

--includes EF.h从外部LIB(从这个LIB功能是否正常工作的文件在同一个核心项目内)。

--declares一些功能

-AB.cpp

--defines这是在AB声明的那些功能。ħ

其可以使用来自AB.h那些功能,而无需问题

[/核心]

- 一些其他cpp文件[日志 - >项目依赖 - >核心]

-Noħ文件

-CD.cpp

- 要求AB.h工作。是随的#include命令和它的正确链接(我可以用鼠标右键单击,然后单击“打开文件”,打开真正的.h文件中)

从AB.h

--uses功能

[/日志]

希望这会更好地让你们了解我的解决方案中的项目结构。

编译Log项目时出现问题。对于任何对AB.h中的函数的引用,它总是会出现链接错误,表示“无法解析的外部符号”。我想这是因为它找不到在AB.h中声明的函数的定义(可能是因为它是一个不同的项目)。由于日志依赖于核心,并且核心将在那时编译,所以我在$(OutputDir)中添加了库目录(将核心和日志构建到同一目录中),以便它可以找到core.lib并添加了“core .lib“更改为”链接器“下的”输入“选项卡下的”其他依赖项“(在项目属性中)。

所以你去了。有任何想法吗?


+0

我想你应该去掉你的代码,以最小的形式造成的错误和向我们展示它。 – adf88 2010-08-15 08:49:14

+0

您是否尝试过列出目录明确(而不是$(OutputDir)),包括在链接器部分发布/调试?我猜这是不是正确解决。 – Jess 2010-08-19 17:36:47

此外日志项目有$(OUTDIR)在项目设置的连接件部分的“附加库目录”的参数。

可能是错的。应该是那个“core.lib”所在的目录,$(OutDir)就是其中的log

类是包含在AB.h(例如在宣告AB.cpp和包括在如CD.cpp的extern。infFlag在AB.cpp声明并在CD.cpp声明为extern的H文件的一部分。

都到哪儿去定义?

+0

请参考原始问题。在原始问题下增加了更多细节。 – alpanik 2010-08-15 11:04:00