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可以轻松地在静态库中使用foo
和bar
。这可能是因为它们处于相同的解决方案中,只需将项目目录添加到项目中的包含目录,b属性即可完成。但是当我尝试在不同的解决方案中使用它时,它就会崩溃。我完全清理并重建了解决方案,但没有运气。
我开始认为它无法在同一个头文件中找到定义而感到困惑。虽然定义在同名的源文件中,但它仍然可能会混淆。
我正在努力寻找解决方案而不进行全面修改。有谁知道该怎么办?
答案 0 :(得分:0)
我想我只需使用" Add Reference"就可以解决这个问题。右键单击我正在使用它的可执行项目。但是,我仍然需要手动导入静态库项目' a'进入外部解决方案C,以便可以进行参考。
我知道这可能不是一种很好的做事方式,但它确实更安全,我很确定它会起作用 - 无论如何。