平台
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 可以轻松foo
地bar
在静态库 a 中使用。这可能是因为它们在同一个解决方案中,只需将项目目录添加到项目 b 属性中的包含目录即可完成工作。但是当我尝试在不同的解决方案中使用它时,它正在崩溃。我对解决方案进行了全面清理和重建,但没有运气。
我开始认为它无法在同一个头文件中找到定义并感到困惑。尽管定义在同名的源文件中,但它仍然可能会混淆。
在没有完全修改的情况下,我正在努力寻找解决方案。有谁知道该怎么做?