称为 C 静态库,所有内容都包装在外部"C"中,但它仍然不起作用

Called C static library with everything wrapped in extern "C" and it's still not working

本文关键字:外部 不起作用 静态 称为 包装      更新时间:2023-10-16

我在VS2010中通过用extern"C"包装头文件来调用C静态链接库,但我仍然得到一个LNK2001:未解析的外部符号。我正在其他地方调用相同的.lib文件,没有任何问题,并且我正在重用其他地方的旧代码,这些代码肯定有效。我使用的代码可以在github.com/toots/microsoft-audio-水印上找到。我正在尝试使用hthres.h中的"thrabs"函数。我想不出它不起作用的任何明显原因。这是示例代码。thrabs是c外部。我的变量_fm_lookup(通常在C++中定义)可能是问题所在吗?

int i;
for(i = 0; i < NFREQ; i++) 
_fm_lookup[i] = thrabs((0.5 + i) * (float) fs * 0.5 / (float) NFREQ);

使用包含C静态库

extern "C" { #include "htres.h" }

错误是

Error   37  error LNK2001: unresolved external symbol _fm_lookup    C:UsersDavidDocumentsProjectswatermarkingBuildsVisualStudio2010internal2003.lib(hthres.obj)

需要将有问题的代码移动到自己的c文件中,并在使用extern"c"时从那里调用它。惨痛的教训。