使用VS2012 C / C ++:
我创建并链接了一个名为" libtools"的静态库。到我的项目。 对libtools lib中的函数的调用按预期工作。
我创建并链接了第二个名为" shunt"的静态库。到我的项目。 但是当我在分流中合并一个函数的调用时,我得到一个c3861"未找到标识符"
我以同样的方式将两个lib添加到我的项目中。我在Framework和References中为每一个添加了一个ref,并在C / C ++ Additional目录中添加了完整路径。
我该如何解决这个问题?
答案 0 :(得分:0)
C ++在创建符号名称时会使用名为name mangling的内容。这是必需的,因为符号名称必须包含完整的函数签名。
当您使用extern "C"
时,名称不会被破坏,并且可以从其他编程语言中使用,例如C。
你明确地用C ++创建了分流库,这意味着shuntfunc
函数在通过编译器后实际上并没有这样命名。由于使用库的实际应用程序是在C中进行的(根据标记和信息进行猜测),因此找不到shuntfunc
符号,而不是告诉C ++编译器不要破坏符号名称。
它适用于其他库可能是因为它也是用C语言制作的。