【问题标题】:C++ unresolved symbolsC++ 未解析的符号
【发布时间】:2010-12-15 12:50:41
【问题描述】:

在我的项目中链接时出现未解决的符号错误。我正在链接到一个外部库,是的,我已经正确设置了配置,但是在调试时它为外部库中的每个类输出以下错误:

error LNK2001: unresolved external symbol __CAP_EXIT_Function

项目使用与外部库相同的运行时 dll,并链接到调试版本的库。

有什么线索可以去哪里吗?

顺便说一句,我使用的是 VS2008

谢谢

【问题讨论】:

    标签: c++ linker unresolved-external


    【解决方案1】:

    您似乎在使用/callcap switch,但没有定义回调函数。请参考上一个链接并实现回调函数。

    对于其他库链接错误。检查以确保您在链接器属性的附加包含部分中指定了 .lib 文件?

    此外,如果您在与您的项目相同的解决方案中有一个 vcproj 文件,您可以右键单击您的项目并为其他库设置依赖项。这样你就不需要像上面提到的那样指定一个额外的库。

    【讨论】:

    • yip,我在包含中指定了它
    • 更新了我认为您的问题的答案。
    • 是的,我还以为是,库 proj 被设置为在函数调用中使用分析,我删除了它以查看是否是问题,但仍然是相同的错误
    • 我认为它仍然在您包含的库中被引用。我认为您仍然需要定义函数。
    • Jac,如果他解决了你的问题,请给他打勾! ;)
    【解决方案2】:

    您是否包含所有可能需要的头文件?你还需要添加

    #include "MyDll.h"
    

    即使在添加对 dll 的引用并将其所在的目录添加到包含目录路径之后。 然后就可以像这样使用dll中的函数了。

    MyDll::MyFunctions::Function();
    

    【讨论】:

    • 是的,库头文件包含在预编译头文件中
    • 标头问题会在编译时引发错误,而不是链接时。
    【解决方案3】:

    该库是 C 库吗?在这种情况下,您需要标头中的函数的外部“C”,也许缺少?

    例如

    extern "C"
    {
      void foo(); 
       ...
    }
    

       extern "C" void foo();
    

    【讨论】:

    • 不,它是 c++,但库的主要接口是函数调用
    猜你喜欢
    • 2013-02-28
    • 2012-11-19
    • 1970-01-01
    • 2012-12-17
    • 2014-04-24
    • 2012-06-30
    • 2010-11-13
    相关资源
    最近更新 更多