错误LNK2019:函数“int __cdecl fld_new”中引用的未解析的外部符号__imp__debugf

时间:2012-09-19 10:58:53

标签: visual-c++

我正在将我的项目从VS 6升级到VS 2010,而在发布模式下构建时,我面临以下错误。

 1>Creating library .\Release\JfFrpF32.lib and object .\Release\JfFrpF32.exp> 
 1>FLD_.obj : error LNK2019: unresolved external symbol __imp__debugf referenced in  function "int __cdecl fld_new(char *,unsigned char,unsigned char,short,char,char,unsigned char,short,char,double,double,short,char *,char,short,short)" (?fld_new@@YAHPADEEFDDEFDNNF0DFF@Z)
 1>Release/JfFrpF32.dll : fatal error LNK1120: 1 unresolved externals
 1>
 1>Build FAILED.

请帮帮我..提前谢谢..

2 个答案:

答案 0 :(得分:5)

导致LNK2019的常见问题包括:

  • 符号声明包含拼写错误,因此, 它与符号的定义名称不同。

  • 使用了一个函数,但参数的类型或数量没有 匹配函数定义。

  • 调用约定(__cdecl,__ stdcall或__fastcall)不同 使用函数声明和函数定义。

  • 符号定义位于编译为C程序的文件中 符号在没有extern“C”修饰符的C ++文件中声明。在 那个案子,修改声明。

了解更多信息See Here

答案 1 :(得分:1)

在我的情况下,即使我使用extern "C",我也得到了未解决的符号错误 hpp是

extern "C"
{
class A
{
public:
    void hi();
};
A* a;
DECLDIR int Connect();
}//extern

和cpp是

#include "DatabasePlugin.hpp"// Include our header, must come after #define DLL_EXPORT


extern "C" // Get rid of name mangling
{   
    DECLDIR int Connect()
    {
        a = new A();
        a->hi();
        return 0;
    }//Connect
}//extern

问题在于我没有为hi()函数创建实现。添加它解决了这个问题。像这样:

extern "C" // Get rid of name mangling
{   
    void A::hi() {}

    DECLDIR int Connect()
    {
        a = new A();
        a->hi();
        return 0;
    }//Connect
}//extern

必须在Hi()之前声明Connect()也可能很重要。