被称为C静态库,包含在extern" C"而它仍然无法正常工作

时间:2016-06-01 18:44:56

标签: c++ visual-studio-2010

我通过用extern" C"包装头文件来调用VS2010中的C静态链接库,但我仍然得到一个LNK2001:未解析的外部符号。我在其他地方调用相同的.lib文件没有任何问题,并且我重复使用来自其他地方的旧代码。我可以在github.com/toots/microsoft-audio-watermarking上找到我使用的代码。我试图使用" thrabs"函数在hthres.h中找到。我无法想到它不起作用的任何明显原因。这是示例代码。 thrabs是外部的。是否有可能我的变量_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:\Users\David\Documents\Projects\watermarking\Builds\VisualStudio2010\internal2003.lib(hthres.obj)

1 个答案:

答案 0 :(得分:2)

需要将违规代码移动到自己的c文件中,并在使用extern“C”时从那里调用它。痛苦的教训。