静态库的一部分时找不到 VS2012 标识符

VS2012 Identifer not found when part of static lib

使用 VS2012 C/C++:

我创建了一个名为 "libtools" 的静态库并将其链接到我的项目。 调用 libtools 库中的函数按预期工作。

我创建了第二个名为 "shunt" 的静态库并将其链接到我的项目。 但是当我在分流中加入对函数的调用时,我得到了一个 c3861 "Identifier not found"

我以相同的方式将这两个库添加到我的项目中。我在 Framework 和 References 中分别添加了一个 ref,并在 C/C++ Additional directories.

中添加了完整路径

我该如何解决这个问题?

C++ 在创建符号名称时使用一种叫做 name mangling 的东西。这是必需的,因为符号名称必须包含完整的函数签名。 当您使用 extern "C" 时,名称不会被破坏,并且可以在其他编程语言中使用,例如 C。

您显然是在 C++ 中创建分流库,这意味着 shuntfunc 函数在通过编译器后实际上并没有那样命名。由于使用该库的实际应用程序是用 C 语言编写的(根据标记和信息进行猜测),因此它找不到 shuntfunc 符号,而不是告诉 C++ 编译器不要破坏符号名称。

它适用于其他库可能是因为它也是用 C 语言制作的。