LNK2019即使链接存在时仍未解析的符号

时间:2013-07-24 12:05:45

标签: visual-studio-2010 linker-errors linkage

PLATFORM

Visual Studio 2010 Proffesional

我的问题

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

我打算在另一个可执行项目'c'中使用静态库'a'功能,该项目位于不同解决方案C中。我所做的是以下内容:

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

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

在我构建解决方案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)报告的功能签名似乎与我的orignal不匹配(我在visual studio中使用真人的查找和替换工具进行检查;没有不匹配)。

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

我需要提到的一件事就是执行官。解决方案'C'中的项目b可以轻松地在静态库中使用foobar。这可能是因为它们处于相同的解决方案中,只需将项目目录添加到项目中的包含目录,b属性即可完成。但是当我尝试在不同的解决方案中使用它时,它就会崩溃。我完全清理并重建了解决方案,但没有运气。

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

我正在努力寻找解决方案而不进行全面修改。有谁知道该怎么办?

1 个答案:

答案 0 :(得分:0)

我想我只需使用" Add Reference"就可以解决这个问题。右键单击我正在使用它的可执行项目。但是,我仍然需要手动导入静态库项目' a'进入外部解决方案C,以便可以进行参考。

我知道这可能不是一种很好的做事方式,但它确实更安全,我很确定它会起作用 - 无论如何。