0

平台

Visual Studio 2010 专业版

我的问题

我有一个名为解决方案 A 的解决方案。我有项目“a”(包含内部和外部头文件和源文件的静态库)和“b”(可执行以查看是否可以使用“a”函数)。

我打算在另一个解决方案 C 中的另一个可执行项目“c”中使用静态库“a”功能我所做的如下:

1)将静态库文件夹(相对路径)添加到我的“c”项目属性(调试和发布配置)中的包含目录部分。

2) 检查 intellisense messenger 以查看导入是否成功。

在我构建解决方案 C 之前,一切都很好。但是,一旦我构建它就会弹出 LNK2019 错误,因为有一个foo()似乎未解决的功能。(报告的)函数签名是:

extern void foo(params);
extern void bar(void);

提醒读者,foo(params)函数在解决方案 A 的静态库“a”中。

我得到的错误信息是:

error LNK2001: unresolved external symbol _foo
error LNK2001: unresolved external symbol _bar

到目前为止我的诊断

明显的诊断是:

1)报告的函数签名似乎与我的原始签名不匹配(我在visual studio中使用真人的查找和替换工具进行了检查;没有不匹配)。

2)检查是否有任何阻止它的包含警卫(我再次检查过,但没有任何会导致此问题的东西)。

我需要提到的一件事是那个执行官。解决方案“C”中的项目 b 可以轻松foobar在静态库 a 中使用。这可能是因为它们在同一个解决方案中,只需将项目目录添加到项目 b 属性中的包含目录即可完成工作。但是当我尝试在不同的解决方案中使用它时,它正在崩溃。我对解决方案进行了全面清理和重建,但没有运气。

我开始认为它无法在同一个头文件中找到定义并感到困惑。尽管定义在同名的源文件中,但它仍然可能会混淆。

在没有完全修改的情况下,我正在努力寻找解决方案。有谁知道该怎么做?

4

1 回答 1

0

我想我通过右键单击我正在使用它的可执行项目来简单地使用“添加引用”来解决这个问题。但是,我仍然不得不手动将静态库项目“a”导入到外部解决方案 C 中,以便可以进行引用。

我知道这可能不是一种很好的做事方式,但它绝对更安全,而且我很确定它会奏效——无论哪种方式。

于 2013-07-24T17:07:01.287 回答